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 <[email protected]>
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() {

Reply via email to