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/01/20 17:39:52 UTC

[44/50] [abbrv] incubator-carbondata git commit: Reverting big decimal compression as it has below issue when big decimal scale value is more then 18 then result is not accurate

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneByte.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneByte.java b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneByte.java
index 3df3c1e..acd73d9 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneByte.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneByte.java
@@ -61,13 +61,15 @@ public class CompressionNoneByte extends ValueCompressionHolder<byte[]> {
   }
 
   @Override
-  public void uncompress(DataType dataType, byte[] data, int offset, int length,
-      int mantissa, Object maxValueObject) {
-    super.unCompress(compressor, dataType, data, offset, length);
-    setUncompressedValues(value);
+  public void uncompress(DataType dataType, byte[] data, int offset, int length, int decimalPlaces,
+      Object maxValueObject, int numberOfRows) {
+    super.unCompress(compressor, dataType, data, offset, length, numberOfRows, maxValueObject,
+        decimalPlaces);
   }
 
-  @Override public byte[] getValue() { return this.value; }
+  @Override public byte[] getValue() {
+    return this.value;
+  }
 
   @Override public void compress() {
     compressedValue = super.compress(compressor, DataType.DATA_BYTE, value);
@@ -86,17 +88,17 @@ public class CompressionNoneByte extends ValueCompressionHolder<byte[]> {
   }
 
   @Override public BigDecimal getBigDecimalValue(int index) {
-    throw new UnsupportedOperationException(
-      "Big decimal is not defined for CompressionNoneByte");
-  }
-
-  private void setUncompressedValues(byte[] data) {
-    this.measureChunkStore =
-      MeasureChunkStoreFactory.INSTANCE.getMeasureDataChunkStore(DataType.DATA_BYTE, data.length);
-    this.measureChunkStore.putData(data);
+    throw new UnsupportedOperationException("Big decimal is not defined for CompressionNoneByte");
   }
 
   @Override public void freeMemory() {
     this.measureChunkStore.freeMemory();
   }
+
+  @Override
+  public void setValue(byte[] data, int numberOfRows, Object maxValueObject, int decimalPlaces) {
+    this.measureChunkStore = MeasureChunkStoreFactory.INSTANCE
+        .getMeasureDataChunkStore(DataType.DATA_BYTE, numberOfRows);
+    this.measureChunkStore.putData(data);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneDefault.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneDefault.java b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneDefault.java
index e7dda8b..41245f4 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneDefault.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneDefault.java
@@ -53,16 +53,20 @@ public class CompressionNoneDefault extends ValueCompressionHolder<double[]> {
     this.actualDataType = actualDataType;
   }
 
-  @Override public void setValue(double[] value) {this.value = value; }
+  @Override public void setValue(double[] value) {
+    this.value = value;
+  }
 
   @Override
-  public void uncompress(DataType dataType, byte[] data, int offset, int length,
-      int decimalPlaces, Object maxValueObject) {
-    super.unCompress(compressor, dataType, data, offset, length);
-    setUncompressedValues(value);
+  public void uncompress(DataType dataType, byte[] data, int offset, int length, int decimalPlaces,
+      Object maxValueObject, int numberOfRows) {
+    super.unCompress(compressor, dataType, data, offset, length, numberOfRows, maxValueObject,
+        decimalPlaces);
   }
 
-  @Override public double[] getValue() { return this.value; }
+  @Override public double[] getValue() {
+    return this.value;
+  }
 
   @Override public void compress() {
     compressedValue = super.compress(compressor, DataType.DATA_DOUBLE, value);
@@ -74,8 +78,7 @@ public class CompressionNoneDefault extends ValueCompressionHolder<double[]> {
   }
 
   @Override public long getLongValue(int index) {
-    throw new UnsupportedOperationException(
-      "Long value is not defined for CompressionNonDefault");
+    throw new UnsupportedOperationException("Long value is not defined for CompressionNonDefault");
   }
 
   @Override public double getDoubleValue(int index) {
@@ -84,17 +87,23 @@ public class CompressionNoneDefault extends ValueCompressionHolder<double[]> {
 
   @Override public BigDecimal getBigDecimalValue(int index) {
     throw new UnsupportedOperationException(
-      "Big decimal is not defined for CompressionNoneDefault");
+        "Big decimal is not defined for CompressionNoneDefault");
   }
 
   private void setUncompressedValues(double[] data) {
     this.measureChunkStore = MeasureChunkStoreFactory.INSTANCE
         .getMeasureDataChunkStore(DataType.DATA_DOUBLE, data.length);
     this.measureChunkStore.putData(data);
-
   }
 
   @Override public void freeMemory() {
     this.measureChunkStore.freeMemory();
   }
+
+  @Override
+  public void setValue(double[] data, int numberOfRows, Object maxValueObject, int decimalPlaces) {
+    this.measureChunkStore = MeasureChunkStoreFactory.INSTANCE
+        .getMeasureDataChunkStore(DataType.DATA_DOUBLE, numberOfRows);
+    this.measureChunkStore.putData(data);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneInt.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneInt.java b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneInt.java
index 323bf24..f0c0311 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneInt.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneInt.java
@@ -57,17 +57,19 @@ public class CompressionNoneInt extends ValueCompressionHolder<int[]> {
     this.value = value;
   }
 
-  @Override public int[] getValue() { return this.value; }
+  @Override public int[] getValue() {
+    return this.value;
+  }
 
   @Override public void compress() {
     compressedValue = super.compress(compressor, DataType.DATA_INT, value);
   }
 
   @Override
-  public void uncompress(DataType dataType, byte[] data, int offset, int length,
-      int decimalPlaces, Object maxValueObject) {
-    super.unCompress(compressor, dataType, data, offset, length);
-    setUncompressedValues(value);
+  public void uncompress(DataType dataType, byte[] data, int offset, int length, int decimalPlaces,
+      Object maxValueObject, int numberOfRows) {
+    super.unCompress(compressor, dataType, data, offset, length, numberOfRows, maxValueObject,
+        decimalPlaces);
   }
 
   @Override public void setValueInBytes(byte[] value) {
@@ -84,17 +86,17 @@ public class CompressionNoneInt extends ValueCompressionHolder<int[]> {
   }
 
   @Override public BigDecimal getBigDecimalValue(int index) {
-    throw new UnsupportedOperationException(
-      "Big decimal is not defined for CompressionNoneLong");
-  }
-
-  private void setUncompressedValues(int[] data) {
-    this.measureChunkStore =
-      MeasureChunkStoreFactory.INSTANCE.getMeasureDataChunkStore(DataType.DATA_INT, data.length);
-    this.measureChunkStore.putData(data);
+    throw new UnsupportedOperationException("Big decimal is not defined for CompressionNoneLong");
   }
 
   @Override public void freeMemory() {
     this.measureChunkStore.freeMemory();
   }
+
+  @Override
+  public void setValue(int[] data, int numberOfRows, Object maxValueObject, int decimalPlaces) {
+    this.measureChunkStore =
+        MeasureChunkStoreFactory.INSTANCE.getMeasureDataChunkStore(DataType.DATA_INT, numberOfRows);
+    this.measureChunkStore.putData(data);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneLong.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneLong.java b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneLong.java
index ee523d7..6e13bb9 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneLong.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneLong.java
@@ -53,19 +53,23 @@ public class CompressionNoneLong extends ValueCompressionHolder<long[]> {
     this.actualDataType = actualDataType;
   }
 
-  @Override public void setValue(long[] value) { this.value = value;  }
+  @Override public void setValue(long[] value) {
+    this.value = value;
+  }
 
-  @Override public long[] getValue() { return this.value; }
+  @Override public long[] getValue() {
+    return this.value;
+  }
 
   @Override public void compress() {
     compressedValue = super.compress(compressor, DataType.DATA_LONG, value);
   }
 
   @Override
-  public void uncompress(DataType dataType, byte[] data, int offset, int length,
-      int decimalPlaces, Object maxValueObject) {
-    super.unCompress(compressor, dataType, data, offset, length);
-    setUncompressedValues(value);
+  public void uncompress(DataType dataType, byte[] data, int offset, int length, int decimalPlaces,
+      Object maxValueObject, int numberOfRows) {
+    super.unCompress(compressor, dataType, data, offset, length, numberOfRows, maxValueObject,
+        decimalPlaces);
   }
 
   @Override public void setValueInBytes(byte[] byteValue) {
@@ -87,11 +91,19 @@ public class CompressionNoneLong extends ValueCompressionHolder<long[]> {
 
   private void setUncompressedValues(long[] data) {
     this.measureChunkStore =
-      MeasureChunkStoreFactory.INSTANCE.getMeasureDataChunkStore(DataType.DATA_LONG, data.length);
+        MeasureChunkStoreFactory.INSTANCE.getMeasureDataChunkStore(DataType.DATA_LONG, data.length);
     this.measureChunkStore.putData(data);
   }
 
   @Override public void freeMemory() {
     this.measureChunkStore.freeMemory();
   }
+
+  @Override
+  public void setValue(long[] data, int numberOfRows, Object maxValueObject, int decimalPlaces) {
+    this.measureChunkStore = MeasureChunkStoreFactory.INSTANCE
+        .getMeasureDataChunkStore(DataType.DATA_LONG, numberOfRows);
+    this.measureChunkStore.putData(data);
+
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneShort.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneShort.java b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneShort.java
index 543fc52..d4289ab 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneShort.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/compression/none/CompressionNoneShort.java
@@ -59,13 +59,15 @@ public class CompressionNoneShort extends ValueCompressionHolder<short[]> {
     this.shortValue = shortValue;
   }
 
-  @Override public short[] getValue() { return this.shortValue; }
+  @Override public short[] getValue() {
+    return this.shortValue;
+  }
 
   @Override
-  public void uncompress(DataType dataType, byte[] data, int offset, int length,
-      int decimalPlaces, Object maxValueObject) {
-    super.unCompress(compressor, dataType, data, offset, length);
-    setUncompressedValues(shortValue);
+  public void uncompress(DataType dataType, byte[] data, int offset, int length, int decimalPlaces,
+      Object maxValueObject, int numberOfRows) {
+    super.unCompress(compressor, dataType, data, offset, length, numberOfRows, maxValueObject,
+        decimalPlaces);
   }
 
   @Override public void compress() {
@@ -86,17 +88,17 @@ public class CompressionNoneShort extends ValueCompressionHolder<short[]> {
   }
 
   @Override public BigDecimal getBigDecimalValue(int index) {
-    throw new UnsupportedOperationException(
-      "Big decimal is not defined for CompressionNonShort");
-  }
-
-  private void setUncompressedValues(short[] data) {
-    this.measureChunkStore = MeasureChunkStoreFactory.INSTANCE
-        .getMeasureDataChunkStore(DataType.DATA_SHORT, data.length);
-    this.measureChunkStore.putData(data);
+    throw new UnsupportedOperationException("Big decimal is not defined for CompressionNonShort");
   }
 
   @Override public void freeMemory() {
     this.measureChunkStore.freeMemory();
   }
+
+  @Override
+  public void setValue(short[] data, int numberOfRows, Object maxValueObject, int decimalPlaces) {
+    this.measureChunkStore = MeasureChunkStoreFactory.INSTANCE
+        .getMeasureDataChunkStore(DataType.DATA_SHORT, numberOfRows);
+    this.measureChunkStore.putData(data);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/compression/type/CompressionBigDecimal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/compression/type/CompressionBigDecimal.java b/core/src/main/java/org/apache/carbondata/core/datastore/compression/type/CompressionBigDecimal.java
deleted file mode 100644
index 8ab14e7..0000000
--- a/core/src/main/java/org/apache/carbondata/core/datastore/compression/type/CompressionBigDecimal.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.carbondata.core.datastore.compression.type;
-
-
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-
-import org.apache.carbondata.common.logging.LogService;
-import org.apache.carbondata.common.logging.LogServiceFactory;
-import org.apache.carbondata.core.constants.CarbonCommonConstants;
-import org.apache.carbondata.core.datastore.compression.ValueCompressionHolder;
-import org.apache.carbondata.core.util.BigDecimalCompressionFinder;
-import org.apache.carbondata.core.util.ValueCompressionUtil.DataType;
-
-/**
- * Big decimal compression
- */
-public class CompressionBigDecimal<T> extends ValueCompressionHolder<T> {
-
-  private static final LogService LOGGER =
-          LogServiceFactory.getLogService(CompressionBigDecimal.class.getName());
-
-  private BigDecimalCompressionFinder compressionFinder;
-
-  /**
-   * leftPart before decimal
-   */
-  private ValueCompressionHolder leftPart;
-
-  /**
-   * rightPart after decimal
-   */
-  private ValueCompressionHolder rightPart;
-
-  private double divisionFactor;
-
-  private boolean isDecimalPlacesNotZero;
-
-  public CompressionBigDecimal(BigDecimalCompressionFinder compressionFinder,
-      ValueCompressionHolder leftPart, ValueCompressionHolder rightPart) {
-    this.compressionFinder = compressionFinder;
-    this.leftPart = leftPart;
-    this.rightPart = rightPart;
-  }
-
-  @Override public void setValue(T value) {
-    Object[] values = (Object[]) value;
-    leftPart.setValue(values[0]);
-    rightPart.setValue(values[1]);
-  }
-
-  @Override
-  public void uncompress(DataType dataType, byte[] data, int offset, int length,
-      int decimalPlaces, Object maxValueObject) {
-    if (decimalPlaces > 0) {
-      this.isDecimalPlacesNotZero = true;
-    }
-    this.divisionFactor = Math.pow(10, decimalPlaces);
-
-    ByteBuffer buffer = ByteBuffer.wrap(data, offset, length);
-    int leftPathLength = buffer.getInt();
-    int rightPartLength = length - leftPathLength - CarbonCommonConstants.INT_SIZE_IN_BYTE;
-    Long[] maxValue = (Long[]) maxValueObject;
-    leftPart.uncompress(compressionFinder.getLeftConvertedDataType(), data,
-        offset + CarbonCommonConstants.INT_SIZE_IN_BYTE, leftPathLength, decimalPlaces,
-        maxValue[0]);
-    rightPart.uncompress(compressionFinder.getRightConvertedDataType(), data,
-        offset + CarbonCommonConstants.INT_SIZE_IN_BYTE + leftPathLength, rightPartLength,
-        decimalPlaces, maxValue[1]);
-  }
-
-  @Override public long getLongValue(int index) {
-    throw new UnsupportedOperationException(
-      "Long is not defined for CompressionBigDecimal");
-  }
-
-  @Override public double getDoubleValue(int index) {
-    throw new UnsupportedOperationException(
-      "Double is not defined for CompressionBigDecimal");
-  }
-
-  @Override public BigDecimal getBigDecimalValue(int index) {
-    long leftValue = leftPart.getLongValue(index);
-    long rightValue = 0;
-    if (isDecimalPlacesNotZero) {
-      rightValue = rightPart.getLongValue(index);
-    }
-    String decimalPart = Double.toString(rightValue / this.divisionFactor);
-    String bigdStr = Long.toString(leftValue) + CarbonCommonConstants.POINT + decimalPart
-            .substring(decimalPart.indexOf(".") + 1, decimalPart.length());
-    return new BigDecimal(bigdStr);
-  }
-
-  @Override public T getValue() {
-    Object[] values = new Object[2];
-    values[0] = leftPart;
-    values[1] = rightPart;
-    return (T) values;
-  }
-
-  @Override public void setValueInBytes(byte[] value) {
-    LOGGER.error("setValueInBytes() is not defined for CompressionBigDecimal");
-  }
-
-  @Override public void compress() {
-    leftPart.compress();
-    rightPart.compress();
-  }
-
-  @Override
-  public byte[] getCompressedData() {
-    byte[] leftdata = leftPart.getCompressedData();
-    byte[] rightdata = rightPart.getCompressedData();
-    ByteBuffer byteBuffer = ByteBuffer
-        .allocate(CarbonCommonConstants.INT_SIZE_IN_BYTE + leftdata.length
-            + rightdata.length);
-    byteBuffer.putInt(leftdata.length);
-    byteBuffer.put(leftdata);
-    byteBuffer.put(rightdata);
-    byteBuffer.flip();
-    return byteBuffer.array();
-  }
-
-  @Override public void freeMemory() {
-    leftPart.freeMemory();
-    rightPart.freeMemory();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/dataholder/CarbonWriteDataHolder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/dataholder/CarbonWriteDataHolder.java b/core/src/main/java/org/apache/carbondata/core/datastore/dataholder/CarbonWriteDataHolder.java
index f17bc4c..e1aa0a0 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/dataholder/CarbonWriteDataHolder.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/dataholder/CarbonWriteDataHolder.java
@@ -29,15 +29,6 @@ public class CarbonWriteDataHolder {
   private long[] longValues;
 
   /**
-   * bigDecimal left part
-   */
-  private long[] bigDecimalLeftValues;
-
-  /**
-   * bigDecimal right part
-   */
-  private long[] bigDecimalRightValues;
-  /**
    * byteValues
    */
   private byte[][] byteValues;
@@ -127,14 +118,6 @@ public class CarbonWriteDataHolder {
     longValues = new long[size];
   }
 
-  public void initialiseBigDecimalValues(int size) {
-    if (size < 1) {
-      throw new IllegalArgumentException("Invalid array size");
-    }
-    bigDecimalLeftValues = new long[size];
-    bigDecimalRightValues = new long[size];
-  }
-
   /**
    * set double value by index
    *
@@ -158,17 +141,6 @@ public class CarbonWriteDataHolder {
   }
 
   /**
-   * set bigdecimal value by index
-   *
-   * @param index
-   * @param value
-   */
-  public void setWritableBigDecimalValueByIndex(int index, long[] value) {
-    bigDecimalLeftValues[index] = value[0];
-    bigDecimalRightValues[index] = value[1];
-    size++;
-  }
-  /**
    * set byte array value by index
    *
    * @param index
@@ -253,26 +225,4 @@ public class CarbonWriteDataHolder {
     }
     return longValues;
   }
-
-  /**
-   * Get Writable bigdecimal Values
-   *
-   * @return
-   */
-  public long[][] getWritableBigDecimalValues() {
-    long[][] bigDecimalValues = new long[2][];
-    if (size < bigDecimalLeftValues.length) {
-      long[] temp = new long[size];
-      System.arraycopy(bigDecimalLeftValues, 0, temp, 0, size);
-      bigDecimalLeftValues = temp;
-    }
-    if (size < bigDecimalRightValues.length) {
-      long[] temp = new long[size];
-      System.arraycopy(bigDecimalRightValues, 0, temp, 0, size);
-      bigDecimalRightValues = temp;
-    }
-    bigDecimalValues[0]= bigDecimalLeftValues;
-    bigDecimalValues[1] = bigDecimalRightValues;
-    return bigDecimalValues;
-  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/datastore/impl/data/compressed/AbstractHeavyCompressedDoubleArrayDataStore.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/impl/data/compressed/AbstractHeavyCompressedDoubleArrayDataStore.java b/core/src/main/java/org/apache/carbondata/core/datastore/impl/data/compressed/AbstractHeavyCompressedDoubleArrayDataStore.java
index 40863a8..b274b21 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/impl/data/compressed/AbstractHeavyCompressedDoubleArrayDataStore.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/impl/data/compressed/AbstractHeavyCompressedDoubleArrayDataStore.java
@@ -68,7 +68,8 @@ public abstract class AbstractHeavyCompressedDoubleArrayDataStore
     byte[][] returnValue = new byte[values.length][];
     for (int i = 0; i < compressionModel.getValueCompressionHolder().length; i++) {
       values[i] = compressionModel.getValueCompressionHolder()[i];
-      if (type[i] != CarbonCommonConstants.BYTE_VALUE_MEASURE) {
+      if (type[i] != CarbonCommonConstants.BYTE_VALUE_MEASURE
+          && type[i] != CarbonCommonConstants.BIG_DECIMAL_MEASURE) {
         // first perform encoding of the data chunk
         values[i].setValue(
             ValueCompressionUtil.getValueCompressor(compressionModel.getCompressionFinders()[i])

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/util/BigDecimalCompressionFinder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/util/BigDecimalCompressionFinder.java b/core/src/main/java/org/apache/carbondata/core/util/BigDecimalCompressionFinder.java
deleted file mode 100644
index ce6f950..0000000
--- a/core/src/main/java/org/apache/carbondata/core/util/BigDecimalCompressionFinder.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.carbondata.core.util;
-
-import org.apache.carbondata.core.util.ValueCompressionUtil.COMPRESSION_TYPE;
-import org.apache.carbondata.core.util.ValueCompressionUtil.DataType;
-
-public class BigDecimalCompressionFinder extends CompressionFinder {
-
-  /**
-   * non decimal part compression type
-   */
-  private COMPRESSION_TYPE leftCompType;
-
-  /**
-   * decimal part compression type
-   */
-  private COMPRESSION_TYPE rightCompType;
-
-  /**
-   * non decimal actual data type
-   */
-  private DataType leftActualDataType;
-
-  /**
-   * decimal actual data type
-   */
-  private DataType rightActualDataType;
-
-  /**
-   * non decimal converted data type
-   */
-  private DataType leftConvertedDataType;
-
-  /**
-   * decimal converted data type
-   */
-  private DataType rightConvertedDataType;
-
-  public BigDecimalCompressionFinder(COMPRESSION_TYPE compType,
-      DataType actualDataType, DataType convertedDataType, char measureStoreType) {
-    super(compType, actualDataType, convertedDataType, measureStoreType);
-  }
-
-  public BigDecimalCompressionFinder(COMPRESSION_TYPE[] compType,
-      DataType[] actualDataType, DataType[] convertedDataType, char measureStoreType) {
-    super(null, null, null, measureStoreType);
-    this.leftCompType = compType[0];
-    this.rightCompType = compType[1];
-    this.leftActualDataType = actualDataType[0];
-    this.rightActualDataType = actualDataType[1];
-    this.leftConvertedDataType = convertedDataType[0];
-    this.rightConvertedDataType = convertedDataType[1];
-  }
-
-  public COMPRESSION_TYPE getLeftCompType() {
-    return leftCompType;
-  }
-
-  public COMPRESSION_TYPE getRightCompType() {
-    return rightCompType;
-  }
-
-  public DataType getLeftActualDataType() {
-    return leftActualDataType;
-  }
-
-  public DataType getRightActualDataType() {
-    return rightActualDataType;
-  }
-
-  public DataType getLeftConvertedDataType() { return leftConvertedDataType; }
-
-  public DataType getRightConvertedDataType() {
-    return rightConvertedDataType;
-  }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java b/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java
index 074c00d..2f9cd19 100644
--- a/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java
+++ b/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java
@@ -185,6 +185,19 @@ public final class DataTypeUtil {
   }
 
   /**
+   * This method will convert a byte value back to big decimal value
+   *
+   * @param raw
+   * @return
+   */
+  public static BigDecimal byteToBigDecimal(byte[] raw, int offset, int length) {
+    int scale = (raw[offset] & 0xFF);
+    byte[] unscale = new byte[length - 1];
+    System.arraycopy(raw, offset+1, unscale, 0, unscale.length);
+    BigInteger sig = new BigInteger(unscale);
+    return new BigDecimal(sig, scale);
+  }
+  /**
    * returns the SqlStatement.Type of corresponding string value
    *
    * @param dataTypeStr

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/main/java/org/apache/carbondata/core/util/ValueCompressionUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/util/ValueCompressionUtil.java b/core/src/main/java/org/apache/carbondata/core/util/ValueCompressionUtil.java
index 612d302..219f69e 100644
--- a/core/src/main/java/org/apache/carbondata/core/util/ValueCompressionUtil.java
+++ b/core/src/main/java/org/apache/carbondata/core/util/ValueCompressionUtil.java
@@ -21,7 +21,6 @@ import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
-import org.apache.carbondata.core.compression.BigDecimalCompressor;
 import org.apache.carbondata.core.compression.BigIntCompressor;
 import org.apache.carbondata.core.compression.DoubleCompressor;
 import org.apache.carbondata.core.compression.ValueCompressor;
@@ -32,7 +31,6 @@ import org.apache.carbondata.core.datastore.compression.WriterCompressModel;
 import org.apache.carbondata.core.datastore.compression.decimal.*;
 import org.apache.carbondata.core.datastore.compression.nondecimal.*;
 import org.apache.carbondata.core.datastore.compression.none.*;
-import org.apache.carbondata.core.datastore.compression.type.*;
 import org.apache.carbondata.core.metadata.ValueEncoderMeta;
 
 public final class ValueCompressionUtil {
@@ -113,11 +111,11 @@ public final class ValueCompressionUtil {
    */
   public static CompressionFinder getCompressionFinder(Object maxValue, Object minValue,
       int mantissa, char measureStoreType, byte dataTypeSelected) {
-    // ''b' for decimal, 'l' for long, 'n' for double
+    // ''l' for long, 'n' for double
     switch (measureStoreType) {
       case 'b':
-        return getBigDecimalCompressorFinder(maxValue, minValue, 0, dataTypeSelected,
-            measureStoreType);
+        return new CompressionFinder(COMPRESSION_TYPE.BIGDECIMAL, DataType.DATA_BYTE,
+            DataType.DATA_BYTE, measureStoreType);
       case 'l':
         return getLongCompressorFinder(maxValue, minValue, mantissa, dataTypeSelected,
             measureStoreType);
@@ -176,32 +174,6 @@ public final class ValueCompressionUtil {
     }
   }
 
-  private static CompressionFinder getBigDecimalCompressorFinder(
-      Object maxValue, Object minValue, int mantissa,
-      byte dataTypeSelected, char measureStoreType) {
-    Long[] maxValues = (Long[])maxValue;
-    Long[] minValues = (Long[])minValue;
-    CompressionFinder leftCompressionFinder = getLongCompressorFinder(maxValues[0], minValues[0],
-        mantissa, dataTypeSelected, measureStoreType);
-    CompressionFinder rightCompressionFinder = getLongCompressorFinder(maxValues[1], minValues[1],
-        mantissa, dataTypeSelected, measureStoreType);
-    COMPRESSION_TYPE[] compressionTypes = new COMPRESSION_TYPE[2];
-    DataType[] actualDataTypes = new DataType[2];
-    DataType[] changedDataTypes = new DataType[2];
-    compressionTypes[0] = leftCompressionFinder.getCompType();
-    compressionTypes[1] = rightCompressionFinder.getCompType();
-
-    actualDataTypes[0] = leftCompressionFinder.getActualDataType();
-    actualDataTypes[1] = rightCompressionFinder.getActualDataType();
-
-    changedDataTypes[0] = leftCompressionFinder.getConvertedDataType();
-    changedDataTypes[1] = rightCompressionFinder.getConvertedDataType();
-
-    CompressionFinder bigdCompressionFinder = new BigDecimalCompressionFinder(
-        compressionTypes, actualDataTypes, changedDataTypes, measureStoreType);
-    return bigdCompressionFinder;
-  }
-
   private static CompressionFinder getLongCompressorFinder(Object maxValue, Object minValue,
       int mantissa, byte dataTypeSelected, char measureStoreType) {
     DataType adaptiveDataType = getDataType((long) maxValue, mantissa, dataTypeSelected);
@@ -251,7 +223,6 @@ public final class ValueCompressionUtil {
    */
   public static ValueCompressor getValueCompressor(CompressionFinder compressorFinder) {
     switch(compressorFinder.getMeasureStoreType()) {
-      case 'b': return new BigDecimalCompressor();
       case 'l': return new BigIntCompressor();
       default : return new DoubleCompressor();
     }
@@ -272,23 +243,7 @@ public final class ValueCompressionUtil {
     }
     return valueCompressionHolders;
   }
-  /**
-   *
-   * @param compressionFinder bigdecimal compression finder
-   * @return ValueCompressionHolder
-   */
-  private static ValueCompressionHolder getValueCompressionHolder(
-      BigDecimalCompressionFinder compressionFinder) {
-    ValueCompressionHolder leftPart = getValueCompressionHolder(
-            compressionFinder.getLeftCompType(), compressionFinder.getLeftActualDataType(),
-            compressionFinder.getLeftConvertedDataType());
 
-    ValueCompressionHolder rightPart = getValueCompressionHolder(
-            compressionFinder.getRightCompType(), compressionFinder.getRightActualDataType(),
-            compressionFinder.getRightConvertedDataType());
-
-    return new CompressionBigDecimal(compressionFinder, leftPart, rightPart);
-  }
 
   /**
    *
@@ -298,9 +253,6 @@ public final class ValueCompressionUtil {
   private static ValueCompressionHolder getValueCompressionHolder(
       CompressionFinder compressionFinder) {
     switch(compressionFinder.getMeasureStoreType()) {
-      case 'b':
-        return getValueCompressionHolder(
-              (BigDecimalCompressionFinder) compressionFinder);
       default:
         return getValueCompressionHolder(compressionFinder.getCompType(),
             compressionFinder.getActualDataType(), compressionFinder.getConvertedDataType());
@@ -318,6 +270,8 @@ public final class ValueCompressionUtil {
         return getCompressionNonDecimalMaxMin(changedDataType);
       case BIGINT:
         return getCompressionNonDecimal(changedDataType);
+      case BIGDECIMAL:
+        return new CompressByteArray();
       default:
         throw new IllegalArgumentException("unsupported compType: " + compType);
     }
@@ -866,7 +820,8 @@ public final class ValueCompressionUtil {
     DATA_FLOAT(),
     DATA_LONG(),
     DATA_BIGINT(),
-    DATA_DOUBLE();
+    DATA_DOUBLE(),
+    DATA_BIGDECIMAL();
     DataType() {
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/core/src/test/java/org/apache/carbondata/core/datastore/chunk/reader/measure/CompressedMeasureChunkFileBasedReaderTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/carbondata/core/datastore/chunk/reader/measure/CompressedMeasureChunkFileBasedReaderTest.java b/core/src/test/java/org/apache/carbondata/core/datastore/chunk/reader/measure/CompressedMeasureChunkFileBasedReaderTest.java
index 978dce9..e4257f6 100644
--- a/core/src/test/java/org/apache/carbondata/core/datastore/chunk/reader/measure/CompressedMeasureChunkFileBasedReaderTest.java
+++ b/core/src/test/java/org/apache/carbondata/core/datastore/chunk/reader/measure/CompressedMeasureChunkFileBasedReaderTest.java
@@ -16,110 +16,75 @@
  */
 package org.apache.carbondata.core.datastore.chunk.reader.measure;
 
-import static junit.framework.TestCase.assertEquals;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-import mockit.Mock;
-import mockit.MockUp;
-
-import org.apache.carbondata.core.datastore.chunk.MeasureColumnDataChunk;
-import org.apache.carbondata.core.datastore.chunk.reader.measure.v1.CompressedMeasureChunkFileBasedReaderV1;
-
-import org.apache.carbondata.core.datastore.impl.data.compressed
-    .HeavyCompressedDoubleArrayDataInMemoryStore;
-import org.apache.carbondata.core.metadata.blocklet.BlockletInfo;
-import org.apache.carbondata.core.metadata.blocklet.datachunk.DataChunk;
-import org.apache.carbondata.core.datastore.FileHolder;
-import org.apache.carbondata.core.datastore.compression.MeasureMetaDataModel;
-import org.apache.carbondata.core.datastore.compression.WriterCompressModel;
-import org.apache.carbondata.core.datastore.dataholder.CarbonWriteDataHolder;
-import org.apache.carbondata.core.metadata.ValueEncoderMeta;
-import org.apache.carbondata.core.util.ValueCompressionUtil;
-import org.junit.BeforeClass;
-import org.junit.Test;
 
 public class CompressedMeasureChunkFileBasedReaderTest {
 
-  static CompressedMeasureChunkFileBasedReaderV1 compressedMeasureChunkFileBasedReader;
-  static CarbonWriteDataHolder[] dataHolder = new CarbonWriteDataHolder[1];
-
-  static WriterCompressModel writerCompressModel;
-  @BeforeClass public static void setup() {
-    List<DataChunk> dataChunkList = new ArrayList<>();
-    DataChunk dataChunk = new DataChunk();
-    dataChunkList.add(dataChunk);
-    dataChunk.setDataPageLength(10);
-    writerCompressModel = new WriterCompressModel();
-    Object maxValue[] = new Object[]{new Long[]{8L, 0L}};
-    Object minValue[] = new Object[]{new Long[]{1L,0L}};
-    byte[] dataTypeSelected = new byte[1];
-    char[] aggType = new char[]{'b'};
-    MeasureMetaDataModel measureMDMdl =
-                new MeasureMetaDataModel(minValue, maxValue, new int[]{1}, maxValue.length, null,
-                    aggType, dataTypeSelected);
-    writerCompressModel = ValueCompressionUtil.getWriterCompressModel(measureMDMdl);
-    
-
-    ValueEncoderMeta meta = new ValueEncoderMeta();
-    meta.setMaxValue(new Long[]{8L,0L});
-    meta.setMinValue(new Long[]{1L,0L});
-    meta.setMantissa(1);
-    meta.setType('b');
-    List<ValueEncoderMeta> valueEncoderMetaList = new ArrayList<>();
-    valueEncoderMetaList.add(meta);
-    dataChunkList.get(0).setValueEncoderMeta(valueEncoderMetaList);
-    BlockletInfo info = new BlockletInfo();
-    info.setMeasureColumnChunk(dataChunkList);
-    compressedMeasureChunkFileBasedReader =
-        new CompressedMeasureChunkFileBasedReaderV1(info, "filePath");
-  }
-
-  @Test public void readMeasureChunkTest() throws IOException {
-    FileHolder fileHolder = new MockUp<FileHolder>() {
-      @Mock public byte[] readByteArray(String filePath, long offset, int length) {
-        dataHolder[0] = new CarbonWriteDataHolder();
-        dataHolder[0].initialiseBigDecimalValues(1);
-        dataHolder[0].setWritableBigDecimalValueByIndex(0, new long[]{2L,1L});
-        byte[][] writableMeasureDataArray =
-            new HeavyCompressedDoubleArrayDataInMemoryStore(writerCompressModel)
-                .getWritableMeasureDataArray(dataHolder).clone();
-        return writableMeasureDataArray[0];
-      }
-    }.getMockInstance();
-
-    MeasureColumnDataChunk measureColumnDataChunks =
-        compressedMeasureChunkFileBasedReader.readMeasureChunk(fileHolder, 0);
-
-    BigDecimal bigD = new BigDecimal("2.1");
-    assertEquals(bigD,
-        measureColumnDataChunks.getMeasureDataHolder().getReadableBigDecimalValueByIndex(0));
-      
-  }
-
-  @Test public void readMeasureChunksTest() throws IOException {
-    FileHolder fileHolder = new MockUp<FileHolder>() {
-      @Mock public byte[] readByteArray(String filePath, long offset, int length) {
-        dataHolder[0] = new CarbonWriteDataHolder();
-        dataHolder[0].initialiseBigDecimalValues(1);
-        dataHolder[0].setWritableBigDecimalValueByIndex(0, new long[]{2L,1L});
-        byte[][] writableMeasureDataArray =
-            new HeavyCompressedDoubleArrayDataInMemoryStore(writerCompressModel)
-                .getWritableMeasureDataArray(dataHolder).clone();
-        return writableMeasureDataArray[0];
-      }
-    }.getMockInstance();
-
-    int[][] blockIndexes = {{0,0}};
-    MeasureColumnDataChunk measureColumnDataChunks[] =
-        compressedMeasureChunkFileBasedReader.readMeasureChunks(fileHolder, blockIndexes);
-
-    BigDecimal bigD = new BigDecimal("2.1");
-    assertEquals(bigD,
-        measureColumnDataChunks[0].getMeasureDataHolder().getReadableBigDecimalValueByIndex(0));
-
-  }
+//  static CompressedMeasureChunkFileBasedReaderV1 compressedMeasureChunkFileBasedReader;
+//  static CarbonWriteDataHolder[] dataHolder = new CarbonWriteDataHolder[1];
+//
+//  static WriterCompressModel writerCompressModel;
+//  @BeforeClass public static void setup() {
+//    List<DataChunk> dataChunkList = new ArrayList<>();
+//    DataChunk dataChunk = new DataChunk();
+//    dataChunkList.add(dataChunk);
+//    dataChunk.setDataPageLength(10);
+//    writerCompressModel = new WriterCompressModel();
+//    Object maxValue[] = new Object[]{new Long[]{8L, 0L}};
+//    Object minValue[] = new Object[]{new Long[]{1L,0L}};
+//    byte[] dataTypeSelected = new byte[1];
+//    char[] aggType = new char[]{'b'};
+//    MeasureMetaDataModel measureMDMdl =
+//                new MeasureMetaDataModel(minValue, maxValue, new int[]{1}, maxValue.length, null,
+//                    aggType, dataTypeSelected);
+//    writerCompressModel = ValueCompressionUtil.getWriterCompressModel(measureMDMdl);
+//    
+//
+//    ValueEncoderMeta meta = new ValueEncoderMeta();
+//    meta.setMaxValue(new Long[]{8L,0L});
+//    meta.setMinValue(new Long[]{1L,0L});
+//    meta.setMantissa(1);
+//    meta.setType('b');
+//    List<ValueEncoderMeta> valueEncoderMetaList = new ArrayList<>();
+//    valueEncoderMetaList.add(meta);
+//    dataChunkList.get(0).setValueEncoderMeta(valueEncoderMetaList);
+//    BlockletInfo info = new BlockletInfo();
+//    info.setMeasureColumnChunk(dataChunkList);
+//    compressedMeasureChunkFileBasedReader =
+//        new CompressedMeasureChunkFileBasedReaderV1(info, "filePath");
+//  }
+//
+//  @Test public void readMeasureChunkTest() throws IOException {
+//    FileHolder fileHolder = new MockUp<FileHolder>() {
+//      @Mock public byte[] readByteArray(String filePath, long offset, int length) {
+//        byte mockedValue[] = { 1, 5, 4, 8, 7 };
+//        return mockedValue;
+//      }
+//    }.getMockInstance();
+//
+//    MeasureColumnDataChunk measureColumnDataChunks =
+//        compressedMeasureChunkFileBasedReader.readMeasureChunk(fileHolder, 0);
+//
+//    BigDecimal bigD = new BigDecimal("2.1");
+//    assertEquals(bigD,
+//        measureColumnDataChunks.getMeasureDataHolder().getReadableBigDecimalValueByIndex(0));
+//      
+//  }
+//
+//  @Test public void readMeasureChunksTest() throws IOException {
+//    FileHolder fileHolder = new MockUp<FileHolder>() {
+//      @Mock public byte[] readByteArray(String filePath, long offset, int length) {
+//        byte mockedValue[] = { 1, 5, 4, 8, 7 };
+//        return mockedValue;
+//      }
+//    }.getMockInstance();
+//
+//    int[][] blockIndexes = {{0,0}};
+//    MeasureColumnDataChunk measureColumnDataChunks[] =
+//        compressedMeasureChunkFileBasedReader.readMeasureChunks(fileHolder, blockIndexes);
+//
+//    BigDecimal bigD = new BigDecimal("2.1");
+//    assertEquals(bigD,
+//        measureColumnDataChunks[0].getMeasureDataHolder().getReadableBigDecimalValueByIndex(0));
+//
+//  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/9e24a3dd/processing/src/main/java/org/apache/carbondata/processing/store/CarbonFactDataHandlerColumnar.java
----------------------------------------------------------------------
diff --git a/processing/src/main/java/org/apache/carbondata/processing/store/CarbonFactDataHandlerColumnar.java b/processing/src/main/java/org/apache/carbondata/processing/store/CarbonFactDataHandlerColumnar.java
index d00fdab..a7eb9d2 100644
--- a/processing/src/main/java/org/apache/carbondata/processing/store/CarbonFactDataHandlerColumnar.java
+++ b/processing/src/main/java/org/apache/carbondata/processing/store/CarbonFactDataHandlerColumnar.java
@@ -476,10 +476,7 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
       } else if (type[i] == CarbonCommonConstants.SUM_COUNT_VALUE_MEASURE) {
         max[i] = -Double.MAX_VALUE;
       } else if (type[i] == CarbonCommonConstants.BIG_DECIMAL_MEASURE) {
-        Long[] bigdMinVal = new Long[2];
-        bigdMinVal[0] = Long.MIN_VALUE;
-        bigdMinVal[1] = Long.MIN_VALUE;
-        max[i] = bigdMinVal;
+        max[i] = new BigDecimal(0.0);
       } else {
         max[i] = 0.0;
       }
@@ -492,14 +489,8 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
         min[i] = Double.MAX_VALUE;
         uniqueValue[i] = Double.MIN_VALUE;
       } else if (type[i] == CarbonCommonConstants.BIG_DECIMAL_MEASURE) {
-        Long[] bigdMaxVal = new Long[2];
-        bigdMaxVal[0] = Long.MAX_VALUE;
-        bigdMaxVal[1] = Long.MAX_VALUE;
-        min[i] = bigdMaxVal;
-        Long[] bigdUniqueVal = new Long[2];
-        bigdUniqueVal[0] = Long.MIN_VALUE;
-        bigdUniqueVal[1] = Long.MIN_VALUE;
-        uniqueValue[i] = bigdUniqueVal;
+        min[i] = new BigDecimal(Double.MAX_VALUE);
+        uniqueValue[i] = new BigDecimal(Double.MIN_VALUE);
       } else {
         min[i] = 0.0;
         uniqueValue[i] = 0.0;
@@ -580,23 +571,11 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
             b = (byte[]) row[customMeasureIndex[i]];
           }
         }
-        BigDecimal value = DataTypeUtil.byteToBigDecimal(b);
-        String[] bigdVals = value.toPlainString().split("\\.");
-        long[] bigDvalue = new long[2];
-        if (bigdVals.length == 2) {
-          bigDvalue[0] = Long.parseLong(bigdVals[0]);
-          BigDecimal bd = new BigDecimal(CarbonCommonConstants.POINT+bigdVals[1]);
-          bigDvalue[1] = (long)(bd.doubleValue()*Math.pow(10, value.scale()));
-          //bigDvalue[1] = Long.parseLong(bigdVals[1]);
-        } else {
-          bigDvalue[0] = Long.parseLong(bigdVals[0]);
-        }
         byteBuffer = ByteBuffer.allocate(b.length + CarbonCommonConstants.INT_SIZE_IN_BYTE);
         byteBuffer.putInt(b.length);
         byteBuffer.put(b);
         byteBuffer.flip();
         b = byteBuffer.array();
-        dataHolder[customMeasureIndex[i]].setWritableBigDecimalValueByIndex(count, bigDvalue);
         dataHolder[customMeasureIndex[i]].setWritableByteArrayValueByIndex(count, b);
       }
       calculateMaxMin(max, min, decimal, customMeasureIndex, row);
@@ -634,10 +613,7 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
       } else if (type[i] == CarbonCommonConstants.SUM_COUNT_VALUE_MEASURE) {
         max[i] = -Double.MAX_VALUE;
       } else if (type[i] == CarbonCommonConstants.BIG_DECIMAL_MEASURE) {
-        Long[] bigdMinVal = new Long[2];
-        bigdMinVal[0] = Long.MIN_VALUE;
-        bigdMinVal[1] = Long.MIN_VALUE;
-        max[i] = bigdMinVal;
+        max[i] = new BigDecimal(0.0);
       } else {
         max[i] = 0.0;
       }
@@ -650,14 +626,8 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
         min[i] = Double.MAX_VALUE;
         uniqueValue[i] = Double.MIN_VALUE;
       } else if (type[i] == CarbonCommonConstants.BIG_DECIMAL_MEASURE) {
-        Long[] bigdMaxVal = new Long[2];
-        bigdMaxVal[0] = Long.MAX_VALUE;
-        bigdMaxVal[1] = Long.MAX_VALUE;
-        min[i] = bigdMaxVal;
-        Long[] bigdUniqueVal = new Long[2];
-        bigdUniqueVal[0] = Long.MIN_VALUE;
-        bigdUniqueVal[1] = Long.MIN_VALUE;
-        uniqueValue[i] = bigdUniqueVal;
+        min[i] = new BigDecimal(Double.MAX_VALUE);
+        uniqueValue[i] = new BigDecimal(Double.MIN_VALUE);
       } else {
         min[i] = 0.0;
         uniqueValue[i] = 0.0;
@@ -751,7 +721,6 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
         byteBuffer.put(b);
         byteBuffer.flip();
         b = byteBuffer.array();
-        dataHolder[customMeasureIndex[i]].setWritableBigDecimalValueByIndex(count, bigDvalue);
         dataHolder[customMeasureIndex[i]].setWritableByteArrayValueByIndex(count, b);
       }
       calculateMaxMin(max, min, decimal, customMeasureIndex, row);
@@ -1216,27 +1185,6 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
           }
           BigDecimal value = DataTypeUtil.byteToBigDecimal(buff);
           decimal[count] = value.scale();
-          String[] bigdVals = value.toPlainString().split("\\.");
-          Long[] maxVal = (Long[])max[count];
-          Long[] minVal = (Long[])min[count];
-          long maxLeftVal = (long)maxVal[0];
-          long maxRightVal = (long)maxVal[1];
-          long minLeftVal = (long) minVal[0];
-          long minRightVal = (long)minVal[1];
-          if (bigdVals.length == 2) {
-            long leftPart = Long.parseLong(bigdVals[0]);
-            BigDecimal bd = new BigDecimal(CarbonCommonConstants.POINT+bigdVals[1]);
-            long rightPart = (long)(bd.doubleValue()*Math.pow(10, value.scale()));
-            //Long.parseLong(bigdVals[1]);
-            maxVal[0] = (maxLeftVal > leftPart ? maxLeftVal : leftPart);
-            maxVal[1] = (maxRightVal > rightPart ? maxRightVal : rightPart);
-            minVal[0] = (minLeftVal < leftPart ? minLeftVal : leftPart);
-            minVal[1] = (minRightVal < rightPart ? minRightVal : rightPart);
-          } else {
-            long leftPart = Long.parseLong(bigdVals[0]);
-            maxVal[0] = (maxLeftVal > leftPart ? maxLeftVal : leftPart);
-            minVal[0] = (minLeftVal < leftPart ? minLeftVal : leftPart);
-          }
         }
       }
     }
@@ -1254,10 +1202,8 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
       if (type[i] == CarbonCommonConstants.BIG_INT_MEASURE) {
         uniqueValue[i] = (long) minValue[i] - 1;
       } else if (type[i] == CarbonCommonConstants.BIG_DECIMAL_MEASURE) {
-        Long[] bigdMinVal = (Long[])minValue[i];
-        Long[] bigdUniqVal = (Long[])uniqueValue[i];
-        bigdUniqVal[0] = bigdMinVal[0] -1;
-        bigdUniqVal[1] = bigdMinVal[1] -1;
+        BigDecimal val = (BigDecimal) minValue[i];
+        uniqueValue[i] = (val.subtract(new BigDecimal(1.0)));
       } else {
         uniqueValue[i] = (double) minValue[i] - 1;
       }
@@ -1402,7 +1348,6 @@ public class CarbonFactDataHandlerColumnar implements CarbonFactHandler {
     for (int i = 0; i < customMeasureIndex.length; i++) {
       dataHolder[customMeasureIndex[i]] = new CarbonWriteDataHolder();
       dataHolder[customMeasureIndex[i]].initialiseByteArrayValues(size);
-      dataHolder[customMeasureIndex[i]].initialiseBigDecimalValues(size);
     }
     return dataHolder;
   }