Github user manishgupta88 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/3027#discussion_r244306298
--- Diff:
integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/schema/CarbonAlterTableColRenameDataTypeChangeCommand.scala
---
@@ -262,13 +263,28 @@ private[sql] case class
CarbonAlterTableColRenameDataTypeChangeCommand(
carbonTable: CarbonTable,
tableInfo: TableInfo,
addColumnSchema: ColumnSchema,
- schemaEvolutionEntry: SchemaEvolutionEntry): Unit = {
+ schemaEvolutionEntry: SchemaEvolutionEntry,
+ oldCarbonColumn: CarbonColumn): Unit = {
val schemaConverter = new ThriftWrapperSchemaConverterImpl
- val a =
List(schemaConverter.fromExternalToWrapperColumnSchema(addColumnSchema))
- val (tableIdentifier, schemaParts, cols) =
AlterTableUtil.updateSchemaInfo(
- carbonTable, schemaEvolutionEntry, tableInfo, Some(a))(sparkSession)
+ // get the carbon column in schema order
+ val carbonColumns =
carbonTable.getCreateOrderColumn(carbonTable.getTableName).asScala
+ .collect { case carbonColumn if !carbonColumn.isInvisible =>
carbonColumn.getColumnSchema }
+ // get the schema ordinal of the column for which the datatype changed
or column is renamed
+ var schemaOrdinal: Int = 0
+ carbonColumns.foreach { carbonColumn =>
+ if
(carbonColumn.getColumnName.equalsIgnoreCase(oldCarbonColumn.getColName)) {
+ schemaOrdinal = carbonColumns.indexOf(carbonColumn)
--- End diff --
Use filter function to achieve the required output
---