[CARBONDATA-1973] User Should not Be able to give the duplicate column name in partition
User Should not Be able to give the duplicate column name in partition even if its case sensitive,hive also does the same This closes #1777 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/0d23461a Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/0d23461a Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/0d23461a Branch: refs/heads/carbonstore Commit: 0d23461a9953a8ceeea7f8c348f61441b75f1c80 Parents: 4adb87a Author: anubhav100 <[email protected]> Authored: Mon Jan 8 16:36:25 2018 +0530 Committer: Jacky Li <[email protected]> Committed: Tue Jan 16 01:00:45 2018 +0800 ---------------------------------------------------------------------- .../StandardPartitionTableQueryTestCase.scala | 5 +++++ .../org/apache/spark/sql/parser/CarbonSparkSqlParser.scala | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/0d23461a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableQueryTestCase.scala ---------------------------------------------------------------------- diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableQueryTestCase.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableQueryTestCase.scala index a36023e..db873d1 100644 --- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableQueryTestCase.scala +++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableQueryTestCase.scala @@ -239,6 +239,11 @@ class StandardPartitionTableQueryTestCase extends QueryTest with BeforeAndAfterA sql(s"""LOAD DATA local inpath '$resourcesPath/data.csv' INTO TABLE staticpartitionload partition(empname='ravi') OPTIONS('DELIMITER'= ',', 'QUOTECHAR'= '"')""") } +test("Creation of partition table should fail if the colname in table schema and partition column is same even if both are case sensitive"){ + intercept[Exception]{ + sql("CREATE TABLE uniqdata_char2(name char,id int) partitioned by (NAME char)stored by 'carbondata' ") + } +} private def verifyPartitionInfo(frame: DataFrame, partitionNames: Seq[String]) = { val plan = frame.queryExecution.sparkPlan http://git-wip-us.apache.org/repos/asf/carbondata/blob/0d23461a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala index 211e0ef..4b77417 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala @@ -200,7 +200,11 @@ class CarbonHelperSqlAstBuilder(conf: SQLConf, throw new MalformedCarbonCommandException("Error: Invalid partition definition") } // partition columns should not be part of the schema - val badPartCols = partitionFields.map(_.partitionColumn).toSet.intersect(colNames.toSet) + val badPartCols = partitionFields + .map(_.partitionColumn.toLowerCase) + .toSet + .intersect(colNames.map(_.toLowerCase).toSet) + if (badPartCols.nonEmpty) { operationNotAllowed(s"Partition columns should not be specified in the schema: " + badPartCols.map("\"" + _ + "\"").mkString("[", ",", "]"),
