Github user kevinjmh commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2654#discussion_r215827023
  
    --- Diff: 
datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java
 ---
    @@ -331,8 +332,18 @@ private BloomQueryModel 
buildQueryModelInternal(CarbonColumn carbonColumn,
           // for dictionary/date columns, convert the surrogate key to bytes
           internalFilterValue = CarbonUtil.getValueAsBytes(DataTypes.INT, 
convertedValue);
         } else {
    -      // for non dictionary dimensions, is already bytes,
    -      internalFilterValue = (byte[]) convertedValue;
    +      // for non dictionary dimensions, numeric columns will be of 
original data,
    +      // so convert the data to bytes
    +      if (DataTypeUtil.isPrimitiveColumn(carbonColumn.getDataType())) {
    +        if (convertedValue == null) {
    +          convertedValue = 
DataConvertUtil.getNullValueForMeasure(carbonColumn.getDataType(),
    +              carbonColumn.getColumnSchema().getScale());
    +        }
    +        internalFilterValue =
    +            CarbonUtil.getValueAsBytes(carbonColumn.getDataType(), 
convertedValue);
    --- End diff --
    
    Result of `getValueAsBytes`  conflicts with existing bloom index data which 
will affect query result.
    For measure in  'NoDict',  original implementation used 
`NonDictionaryFieldConverterImpl` to convert value, but now it uses 
`MeasureFieldConverterImpl` to convert value


---

Reply via email to