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() {