You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ra...@apache.org on 2017/09/06 07:07:28 UTC

carbondata git commit: [CARBONDATA-1432] Fixed bug when column name in default.value property is not equal to column name in alter command

Repository: carbondata
Updated Branches:
  refs/heads/master 08ef3bb53 -> f09dff1b4


[CARBONDATA-1432] Fixed bug when column name in default.value property is not equal to column name in alter command

Added exception case when column name in alter table command does not matches with the column name in default.value property.

This closes #1318


Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/f09dff1b
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/f09dff1b
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/f09dff1b

Branch: refs/heads/master
Commit: f09dff1b4f684db2b7631b2dcd51930c3c9b0ce9
Parents: 08ef3bb
Author: Geetika Gupta <ge...@knoldus.in>
Authored: Mon Sep 4 13:27:02 2017 +0530
Committer: Ravindra Pesala <ra...@gmail.com>
Committed: Wed Sep 6 12:37:13 2017 +0530

----------------------------------------------------------------------
 .../cluster/sdv/generated/AlterTableTestCase.scala   | 15 ++++++++++-----
 .../spark/sql/parser/CarbonSpark2SqlParser.scala     | 13 ++++++++++++-
 2 files changed, 22 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/f09dff1b/integration/spark-common-cluster-test/src/test/scala/org/apache/carbondata/cluster/sdv/generated/AlterTableTestCase.scala
----------------------------------------------------------------------
diff --git a/integration/spark-common-cluster-test/src/test/scala/org/apache/carbondata/cluster/sdv/generated/AlterTableTestCase.scala b/integration/spark-common-cluster-test/src/test/scala/org/apache/carbondata/cluster/sdv/generated/AlterTableTestCase.scala
index 46f82f2..0624f17 100644
--- a/integration/spark-common-cluster-test/src/test/scala/org/apache/carbondata/cluster/sdv/generated/AlterTableTestCase.scala
+++ b/integration/spark-common-cluster-test/src/test/scala/org/apache/carbondata/cluster/sdv/generated/AlterTableTestCase.scala
@@ -450,11 +450,16 @@ class AlterTableTestCase extends QueryTest with BeforeAndAfterAll {
 
   //Check add column with option default value is given for an existing column
   test("ARID_AddColumn_001_14", Include) {
-    sql(s"""drop table if exists test1""").collect
-     sql(s"""create table test1 (name string) stored by 'carbondata'""").collect
-   sql(s"""insert into test1 select 'xx'""").collect
-    sql(s"""ALTER TABLE test1 ADD COLUMNS (Id int) TBLPROPERTIES('DICTIONARY_INCLUDE'='id','default.value.name'='yy')""").collect
-     sql(s"""drop table if exists test1""").collect
+    try {
+      sql(s"""drop table if exists test1""").collect
+      sql(s"""create table test1 (name string) stored by 'carbondata'""").collect
+      sql(s"""insert into test1 select 'xx'""").collect
+      sql(s"""ALTER TABLE test1 ADD COLUMNS (Id int) TBLPROPERTIES('DICTIONARY_INCLUDE'='id','default.value.name'='yy')""").collect
+      assert(false)
+      sql(s"""drop table if exists test1""").collect
+    } catch {
+      case _ => assert(true)
+    }
   }
 
 

http://git-wip-us.apache.org/repos/asf/carbondata/blob/f09dff1b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSpark2SqlParser.scala
----------------------------------------------------------------------
diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSpark2SqlParser.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSpark2SqlParser.scala
index 69fe4e8..1d74bee 100644
--- a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSpark2SqlParser.scala
+++ b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSpark2SqlParser.scala
@@ -341,7 +341,14 @@ class CarbonSpark2SqlParser extends CarbonDDLSqlParser {
               throw new MalformedCarbonCommandException(
                 s"Unsupported Table property in add column: ${ f._1 }")
             } else if (f._1.toLowerCase.startsWith("default.value.")) {
-              f._1 -> f._2
+              if (fields.count(field => checkFieldDefaultValue(field.column,
+                f._1.toLowerCase)) == 1) {
+                 f._1 -> f._2
+            } else {
+                 throw new MalformedCarbonCommandException(
+                   s"Default.value property does not matches with the columns in ALTER command. " +
+                     s"Column name in property is: ${ f._1}")
+               }
             } else {
               f._1 -> f._2.toLowerCase
             })
@@ -368,6 +375,10 @@ class CarbonSpark2SqlParser extends CarbonDDLSqlParser {
         AlterTableAddColumns(alterTableAddColumnsModel)
     }
 
+  private def checkFieldDefaultValue(fieldName: String, defaultValueColumnName: String): Boolean = {
+    defaultValueColumnName.equalsIgnoreCase("default.value." + fieldName)
+  }
+
   private def convertFieldNamesToLowercase(field: Field): Field = {
     val name = field.column.toLowerCase
     field.copy(column = name, name = Some(name))