This is an automated email from the ASF dual-hosted git repository.

akashrn5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/carbondata.git


The following commit(s) were added to refs/heads/master by this push:
     new 2bdfe1e  [CARBONDATA-3348] Fix the case insensitive validation for 
duplicate sort column.
2bdfe1e is described below

commit 2bdfe1e6688e4a43c289ce30811dcfd35e237083
Author: Nihal kumar ojha <[email protected]>
AuthorDate: Mon Mar 2 09:46:50 2020 +0530

    [CARBONDATA-3348] Fix the case insensitive validation for duplicate sort 
column.
    
    Why is this PR needed?
    Currently the column name with different case(upper and lower)
    is getting considered as different columns for sort properties.
    
    What changes were proposed in this PR?
    Added the case insensitive validation for duplicate sort column.
    
    Does this PR introduce any user interface change?
    No
    
    Is any new testcase added?
    Yes
    
    This closes #3647
---
 .../scala/org/apache/carbondata/spark/util/CommonUtil.scala    | 10 ++++++----
 .../alterTable/TestAlterTableSortColumnsProperty.scala         |  9 +++++++--
 .../spark/testsuite/sortcolumns/TestSortColumns.scala          |  2 +-
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git 
a/integration/spark/src/main/scala/org/apache/carbondata/spark/util/CommonUtil.scala
 
b/integration/spark/src/main/scala/org/apache/carbondata/spark/util/CommonUtil.scala
index c911b48..fc7dc36 100644
--- 
a/integration/spark/src/main/scala/org/apache/carbondata/spark/util/CommonUtil.scala
+++ 
b/integration/spark/src/main/scala/org/apache/carbondata/spark/util/CommonUtil.scala
@@ -760,11 +760,13 @@ object CommonUtil {
       fields: Seq[(String, String)],
       varcharCols: Seq[String]
   ): Unit = {
-    if (sortKey.diff(sortKey.distinct).length > 0 ||
-        (sortKey.length > 1 && sortKey.contains(""))) {
+    val sortKeyLowerCase = sortKey.map(_.toLowerCase())
+    if ((sortKeyLowerCase).diff(sortKeyLowerCase.distinct).length > 0 ||
+      (sortKeyLowerCase.length > 1 && sortKeyLowerCase.contains(""))) {
       throw new MalformedCarbonCommandException(
-        "SORT_COLUMNS Either having duplicate columns : " +
-        sortKey.diff(sortKey.distinct).mkString(",") + " or it contains 
illegal argumnet.")
+        "SORT_COLUMNS Either contains duplicate columns : " +
+          sortKeyLowerCase.diff(sortKeyLowerCase.distinct).mkString(",") +
+          " or it contains an illegal argument.")
     }
 
     sortKey.foreach { column =>
diff --git 
a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/alterTable/TestAlterTableSortColumnsProperty.scala
 
b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/alterTable/TestAlterTableSortColumnsProperty.scala
index 7858fe8..bcbb6fe 100644
--- 
a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/alterTable/TestAlterTableSortColumnsProperty.scala
+++ 
b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/alterTable/TestAlterTableSortColumnsProperty.scala
@@ -282,12 +282,17 @@ class TestAlterTableSortColumnsProperty extends QueryTest 
with BeforeAndAfterAll
     ex = intercept[RuntimeException] {
       sql("alter table alter_sc_validate set tblproperties('sort_columns'=' 
stringField1 , intField, stringField1')")
     }
-    assert(ex.getMessage.contains("SORT_COLUMNS Either having duplicate 
columns : stringField1 or it contains illegal argumnet"))
+    assert(ex.getMessage.contains("SORT_COLUMNS Either contains duplicate 
columns : stringfield1 or it contains an illegal argument"))
 
     ex = intercept[RuntimeException] {
       sql("alter table alter_sc_validate set tblproperties('sort_columns'=' 
stringField , intField, stringField')")
     }
-    assert(ex.getMessage.contains("SORT_COLUMNS Either having duplicate 
columns : stringField or it contains illegal argumnet"))
+    assert(ex.getMessage.contains("SORT_COLUMNS Either contains duplicate 
columns : stringfield or it contains an illegal argument"))
+
+    ex = intercept[RuntimeException] {
+      sql("alter table alter_sc_validate set tblproperties('sort_columns'=' 
stringField , intField, stringFIELD')")
+    }
+    assert(ex.getMessage.contains("SORT_COLUMNS Either contains duplicate 
columns : stringfield or it contains an illegal argument"))
 
     // not supported data type
 //    ex = intercept[RuntimeException] {
diff --git 
a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/sortcolumns/TestSortColumns.scala
 
b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/sortcolumns/TestSortColumns.scala
index c08eb50..7295b85 100644
--- 
a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/sortcolumns/TestSortColumns.scala
+++ 
b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/sortcolumns/TestSortColumns.scala
@@ -297,7 +297,7 @@ class TestSortColumns extends QueryTest with 
BeforeAndAfterAll {
     val exceptionCaught = intercept[MalformedCarbonCommandException]{
       sql("CREATE TABLE sorttable1 (empno int, empname String, designation 
String, doj Timestamp, workgroupcategory int, workgroupcategoryname String, 
deptno int, deptname String, projectcode int, projectjoindate Timestamp, 
projectenddate Timestamp,attendance int,utilization int,salary int) STORED AS 
carbondata tblproperties('sort_columns'='empno,empname,empno')")
     }
-    assert(exceptionCaught.getMessage.equals("SORT_COLUMNS Either having 
duplicate columns : empno or it contains illegal argumnet."))
+    assert(exceptionCaught.getMessage.equals("SORT_COLUMNS Either contains 
duplicate columns : empno or it contains an illegal argument."))
   }
 
   test("Test tableTwo data") {

Reply via email to