You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ak...@apache.org on 2019/08/09 05:01:04 UTC
[carbondata] branch master updated: [CARBONDATA-3486] Fix
Serialization/Deserialization issue with DataType
This is an automated email from the ASF dual-hosted git repository.
akashrn5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/carbondata.git
The following commit(s) were added to refs/heads/master by this push:
new aa67a99 [CARBONDATA-3486] Fix Serialization/Deserialization issue with DataType
aa67a99 is described below
commit aa67a9928be075c42330cd9e18fbe96fd5e1ab2e
Author: manishnalla1994 <ma...@gmail.com>
AuthorDate: Fri Aug 2 17:20:56 2019 +0530
[CARBONDATA-3486] Fix Serialization/Deserialization issue with DataType
Problem:
When we use old store and do alter add sort columns on it then query on the old segment,
serialization/de-serialization issue comes for Filter Column of Measure type which has been changed
in Sort Column as it is being de-serialized by ObjectSerialization. This fails the check and the query.
Solution:
Checked the datatype based on Datatype ID and not on the object.
This closes #3348
---
.../main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java | 5 +++--
.../resolver/resolverinfo/MeasureColumnResolvedFilterInfo.java | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java b/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
index 547ed39..59d8c5a 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/filter/FilterUtil.java
@@ -1524,17 +1524,18 @@ public final class FilterUtil {
DimColumnExecuterFilterInfo dimColumnExecuterInfo, CarbonMeasure measures,
MeasureColumnExecuterFilterInfo msrColumnExecuterInfo) {
if (null != measures) {
+ DataType filterColumnDataType = DataTypes.valueOf(measures.getDataType().getId());
DataTypeConverterImpl converter = new DataTypeConverterImpl();
Object[] keysBasedOnFilter = filterValues.getMeasuresFilterValuesList()
.toArray((new Object[filterValues.getMeasuresFilterValuesList().size()]));
for (int i = 0; i < keysBasedOnFilter.length; i++) {
if (keysBasedOnFilter[i] != null) {
keysBasedOnFilter[i] = DataTypeUtil
- .getDataBasedOnDataType(keysBasedOnFilter[i].toString(), measures.getDataType(),
+ .getDataBasedOnDataType(keysBasedOnFilter[i].toString(), filterColumnDataType,
converter);
}
}
- msrColumnExecuterInfo.setFilterKeys(keysBasedOnFilter, measures.getDataType());
+ msrColumnExecuterInfo.setFilterKeys(keysBasedOnFilter, filterColumnDataType);
} else {
if (filterValues == null) {
dimColumnExecuterInfo.setFilterKeys(new byte[0][]);
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/filter/resolver/resolverinfo/MeasureColumnResolvedFilterInfo.java b/core/src/main/java/org/apache/carbondata/core/scan/filter/resolver/resolverinfo/MeasureColumnResolvedFilterInfo.java
index e64eed9..ad5e0c6 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/filter/resolver/resolverinfo/MeasureColumnResolvedFilterInfo.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/filter/resolver/resolverinfo/MeasureColumnResolvedFilterInfo.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.carbondata.core.metadata.datatype.DataTypes;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonColumn;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonDimension;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonMeasure;
@@ -101,7 +102,7 @@ public class MeasureColumnResolvedFilterInfo extends ColumnResolvedFilterInfo
}
public void setType(org.apache.carbondata.core.metadata.datatype.DataType dataType) {
- this.type = dataType;
+ this.type = DataTypes.valueOf(dataType.getId());
}
public CarbonColumn getCarbonColumn() {