[
https://issues.apache.org/jira/browse/CARBONDATA-3965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ajantha Bhat resolved CARBONDATA-3965.
--------------------------------------
Fix Version/s: 2.1.0
Resolution: Fixed
> Adaptive encoding of Complex primitive float is using log value to store float (4 bytes) data
> ---------------------------------------------------------------------------------------------
>
> Key: CARBONDATA-3965
> URL:
https://issues.apache.org/jira/browse/CARBONDATA-3965> Project: CarbonData
> Issue Type: Bug
> Reporter: Ajantha Bhat
> Priority: Major
> Fix For: 2.1.0
>
> Time Spent: 4h
> Remaining Estimate: 0h
>
> I have tested, With current UT itself it is hitting. for [Null, 5.512] it is using long as storage for complex primitive adaptive. Base behavior needs to check. I guess it can be analyzed separately
>
> For this, I have checked
> If No complex type, (if it is just primitive type) same values goes to DirectCompress, not adaptive. But for complex primitive it goes to adaptive because of below code. And as min max is stored as double precision. Long is chosen for this.
> {{DefaultEncodingFactory#selectCodecByAlgorithmForFloating()}}
>
> {{} else if (decimalCount < 0 && !isComplexPrimitive) \{
> return new DirectCompressCodec(DataTypes.DOUBLE);
> } else \{
> return getColumnPageCodec(stats, isComplexPrimitive, columnSpec, srcDataType, maxValue,
> minValue, decimalCount, absMaxValue);
> }}}
> {{}}
> I don't know (remember) why complex primitive should not enter direct compress. why that check is explicitly added.{{}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)