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;
}