Repository: carbondata Updated Branches: refs/heads/master ab11a484e -> cc4bc8100
[CARBONDATA-2133] Fixed Exception displays after performing select query on newly added Boolean Type Problem : In Restructure util and RestructureBasedVectorResultCollector to get the default value of a measure type the case for boolean data type was missing,and in DataTypeUtil to store default value in bytes case of boolean data type was missing Solution: Add the Boolean data type case This closes #1934 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/cc4bc810 Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/cc4bc810 Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/cc4bc810 Branch: refs/heads/master Commit: cc4bc810005003130f66d8021a06bbc8e3f87bbd Parents: ab11a48 Author: anubhav100 <anubhav.ta...@knoldus.in> Authored: Tue Feb 6 13:33:39 2018 +0530 Committer: manishgupta88 <tomanishgupt...@gmail.com> Committed: Thu Feb 22 11:50:30 2018 +0530 ---------------------------------------------------------------------- .../RestructureBasedVectorResultCollector.java | 5 +++-- .../scan/executor/util/RestructureUtil.java | 8 ++++++- .../AlterTableValidationTestCase.scala | 22 +++++++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/cc4bc810/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java index 1e29e98..0f1b9f9 100644 --- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java +++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java @@ -88,6 +88,7 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector /** * Gets the default value for each CarbonMeasure + * * @param carbonMeasure * @return */ @@ -96,8 +97,6 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector carbonMeasure.getDefaultValue()); } - - @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) { throw new UnsupportedOperationException("collectData is not supported here"); } @@ -239,6 +238,8 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector } else if (DataTypes.isDecimal(dataType)) { vector.putDecimals(columnVectorInfo.vectorOffset, columnVectorInfo.size, ((Decimal) defaultValue).toJavaBigDecimal(), measure.getPrecision()); + } else if (dataType == DataTypes.BOOLEAN) { + vector.putBoolean(columnVectorInfo.vectorOffset, (Boolean) defaultValue); } else { vector.putDoubles(columnVectorInfo.vectorOffset, columnVectorInfo.size, (double) defaultValue); http://git-wip-us.apache.org/repos/asf/carbondata/blob/cc4bc810/core/src/main/java/org/apache/carbondata/core/scan/executor/util/RestructureUtil.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/carbondata/core/scan/executor/util/RestructureUtil.java b/core/src/main/java/org/apache/carbondata/core/scan/executor/util/RestructureUtil.java index 288aea7..6500dd7 100644 --- a/core/src/main/java/org/apache/carbondata/core/scan/executor/util/RestructureUtil.java +++ b/core/src/main/java/org/apache/carbondata/core/scan/executor/util/RestructureUtil.java @@ -295,6 +295,9 @@ public class RestructureUtil { } else if (dataType == DataTypes.INT) { value = new String(defaultValue, Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)); measureDefaultValue = Integer.parseInt(value); + } else if (dataType == DataTypes.BOOLEAN) { + value = new String(defaultValue, Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)); + measureDefaultValue = Boolean.valueOf(value); } else if (DataTypes.isDecimal(dataType)) { BigDecimal decimal = DataTypeUtil.byteToBigDecimal(defaultValue); if (columnSchema.getScale() > decimal.scale()) { @@ -323,7 +326,7 @@ public class RestructureUtil { byte[] defaultValue) { Object measureDefaultValue = null; if (!isDefaultValueNull(defaultValue)) { - String value = null; + String value; DataType dataType = columnSchema.getDataType(); if (dataType == DataTypes.SHORT) { value = new String(defaultValue, Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)); @@ -334,6 +337,9 @@ public class RestructureUtil { } else if (dataType == DataTypes.LONG) { value = new String(defaultValue, Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)); measureDefaultValue = Long.parseLong(value); + } else if (dataType == DataTypes.BOOLEAN) { + value = new String(defaultValue, Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET)); + measureDefaultValue = Boolean.valueOf(value); } else if (DataTypes.isDecimal(dataType)) { BigDecimal decimal = DataTypeUtil.byteToBigDecimal(defaultValue); if (columnSchema.getScale() > decimal.scale()) { http://git-wip-us.apache.org/repos/asf/carbondata/blob/cc4bc810/integration/spark2/src/test/scala/org/apache/spark/carbondata/restructure/AlterTableValidationTestCase.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/test/scala/org/apache/spark/carbondata/restructure/AlterTableValidationTestCase.scala b/integration/spark2/src/test/scala/org/apache/spark/carbondata/restructure/AlterTableValidationTestCase.scala index 04f2a71..5957abe 100644 --- a/integration/spark2/src/test/scala/org/apache/spark/carbondata/restructure/AlterTableValidationTestCase.scala +++ b/integration/spark2/src/test/scala/org/apache/spark/carbondata/restructure/AlterTableValidationTestCase.scala @@ -40,6 +40,10 @@ class AlterTableValidationTestCase extends Spark2QueryTest with BeforeAndAfterAl sql("drop table if exists restructure_bad") sql("drop table if exists restructure_badnew") sql("drop table if exists allKeyCol") + sql("drop table if exists testalterwithboolean") + sql("drop table if exists testalterwithbooleanwithoutdefaultvalue") + + // clean data folder CarbonProperties.getInstance() sql( @@ -566,7 +570,20 @@ class AlterTableValidationTestCase extends Spark2QueryTest with BeforeAndAfterAl sql("drop table if exists restructure1") sql("drop table if exists restructure") } - +test("test alter command for boolean data type with correct default measure value") { + sql("create table testalterwithboolean(id int,name string) stored by 'carbondata' ") + sql("insert into testalterwithboolean values(1,'anubhav') ") + sql( + "alter table testalterwithboolean add columns(booleanfield boolean) tblproperties('default.value.booleanfield'='true')") + checkAnswer(sql("select * from testalterwithboolean"),Seq(Row(1,"anubhav",true))) +} + test("test alter command for boolean data type with out default measure value") { + sql("create table testalterwithbooleanwithoutdefaultvalue(id int,name string) stored by 'carbondata' ") + sql("insert into testalterwithbooleanwithoutdefaultvalue values(1,'anubhav') ") + sql( + "alter table testalterwithbooleanwithoutdefaultvalue add columns(booleanfield boolean)") + checkAnswer(sql("select * from testalterwithbooleanwithoutdefaultvalue"),Seq(Row(1,"anubhav",null))) + } override def afterAll { sql("DROP TABLE IF EXISTS restructure") sql("drop table if exists table1") @@ -580,5 +597,8 @@ class AlterTableValidationTestCase extends Spark2QueryTest with BeforeAndAfterAl sql("drop table if exists defaultSortColumnsWithAlter") sql("drop table if exists specifiedSortColumnsWithAlter") sql("drop table if exists allKeyCol") + sql("drop table if exists testalterwithboolean") + sql("drop table if exists testalterwithbooleanwithoutdefaultvalue") + } }