Posted by
GitBox on
URL: http://apache-carbondata-dev-mailing-list-archive.168.s1.nabble.com/GitHub-carbondata-ShreelekhyaG-opened-a-new-pull-request-4113-WIP-Describe-complex-columns-tp107265p107575.html
ShreelekhyaG commented on a change in pull request #4113:
URL:
https://github.com/apache/carbondata/pull/4113#discussion_r613122469##########
File path: integration/spark/src/main/scala/org/apache/spark/sql/execution/command/table/CarbonDescribeFormattedCommand.scala
##########
@@ -370,3 +374,147 @@ private[sql] case class CarbonDescribeFormattedCommand(
override protected def opName: String = "DESC FORMATTED"
}
+
+case class CarbonDescribeColumnCommand(
+ databaseNameOp: Option[String],
+ tableName: String,
+ inputFieldNames: java.util.List[String])
+ extends MetadataCommand {
+
+ override val output: Seq[Attribute] = Seq(
+ // Column names are based on Hive.
+ AttributeReference("col_name", StringType, nullable = false,
+ new MetadataBuilder().putString("comment", "name of the column").build())(),
+ AttributeReference("data_type", StringType, nullable = false,
+ new MetadataBuilder().putString("comment", "data type of the column").build())(),
+ AttributeReference("comment", StringType, nullable = true,
+ new MetadataBuilder().putString("comment", "comment of the column").build())()
+ )
+
+ override def processMetadata(sparkSession: SparkSession): Seq[Row] = {
+ val (tableSchema, carbonTable) = Checker.getSchemaAndTable(databaseNameOp, tableName)
+ val inputField = tableSchema.find(_.name.equalsIgnoreCase(inputFieldNames.get(0)))
+ if (inputField.isEmpty) {
+ throw new MalformedCarbonCommandException(
+ s"Column ${ inputFieldNames.get(0) } does not exists in the table " +
+ s"${ carbonTable.getDatabaseName }.$tableName")
+ }
+ setAuditTable(carbonTable)
+ var results = Seq[(String, String, String)]()
+ var currField = inputField.get
+ val inputFieldsIterator = inputFieldNames.iterator()
+ var inputColumn = inputFieldsIterator.next()
+ while (results.isEmpty) {
+ breakable {
+ if (currField.dataType.typeName.equalsIgnoreCase(CarbonCommonConstants.ARRAY)) {
Review comment:
It works for all columns. If we give describe primitive column, it simply displays column name, datatype, comment details. I have added one such query in the test case.
--
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:
[hidden email]