Github user ravipesala commented on a diff in the pull request: https://github.com/apache/carbondata/pull/1469#discussion_r153062720 --- Diff: integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala --- @@ -184,10 +126,86 @@ class CarbonSqlAstBuilder(conf: SQLConf) extends SparkSqlAstBuilder(conf) { } } - private def needToConvertToLowerCase(key: String): Boolean = { - val noConvertList = Array("LIST_INFO", "RANGE_INFO") - !noConvertList.exists(x => x.equalsIgnoreCase(key)); + def getPropertyKeyValues(ctx: TablePropertyListContext): Map[String, String] + = { + Option(ctx).map(visitPropertyKeyValues) + .getOrElse(Map.empty) } + def createCarbontable(tableHeader: CreateTableHeaderContext, + skewSpecContext: SkewSpecContext, + bucketSpecContext: BucketSpecContext, + partitionColumns: ColTypeListContext, + columns : ColTypeListContext, + tablePropertyList : TablePropertyListContext) : LogicalPlan = { + // val parser = new CarbonSpark2SqlParser + + val (name, temp, ifNotExists, external) = visitCreateTableHeader(tableHeader) + // TODO: implement temporary tables + if (temp) { + throw new ParseException( + "CREATE TEMPORARY TABLE is not supported yet. " + + "Please use CREATE TEMPORARY VIEW as an alternative.", tableHeader) + } + if (skewSpecContext != null) { + operationNotAllowed("CREATE TABLE ... SKEWED BY", skewSpecContext) + } + if (bucketSpecContext != null) { + operationNotAllowed("CREATE TABLE ... CLUSTERED BY", bucketSpecContext) + } + val partitionByStructFields = Option(partitionColumns).toSeq.flatMap(visitColTypeList) + val partitionerFields = partitionByStructFields.map { structField => + PartitionerField(structField.name, Some(structField.dataType.toString), null) + } + val cols = Option(columns).toSeq.flatMap(visitColTypeList) + val properties = getPropertyKeyValues(tablePropertyList) + + // Ensuring whether no duplicate name is used in table definition + val colNames = cols.map(_.name) + if (colNames.length != colNames.distinct.length) { + val duplicateColumns = colNames.groupBy(identity).collect { + case (x, ys) if ys.length > 1 => "\"" + x + "\"" + } + operationNotAllowed(s"Duplicated column names found in table definition of $name: " + --- End diff -- Indentation is wrong
---