[ 
https://issues.apache.org/jira/browse/HIVE-19131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Laszlo Bodor updated HIVE-19131:
--------------------------------
    Description: 
DecimalColumnStatsMergerTest has a strange comparison logic, which needs to be 
reviewed.

Regarding low and high values, it uses compareTo with the same direction, which 
seems to be incorrect: old.compareTo(new) > 0 -> pick old value in both cases
{code:java}
Decimal lowValue = aggregateData.getLowValue() != null && 
(aggregateData.getLowValue().compareTo(newData.getLowValue()) > 0) ? 
aggregateData .getLowValue() : newData.getLowValue(); 
aggregateData.setLowValue(lowValue); 
Decimal highValue = aggregateData.getHighValue() != null && 
(aggregateData.getHighValue().compareTo(newData.getHighValue()) > 0) ? 
aggregateData .getHighValue() : newData.getHighValue();

{code}

  was:
DecimalColumnStatsMergerTest has a strange comparison logic, which needs to be 
reviewed.

Regarding low and high values, it uses compareTo with the same direction, which 
seems to be incorrect.

{code}

Decimal lowValue = aggregateData.getLowValue() != null && 
(aggregateData.getLowValue().compareTo(newData.getLowValue()) > 0) ? 
aggregateData .getLowValue() : newData.getLowValue(); 
aggregateData.setLowValue(lowValue); Decimal highValue = 
aggregateData.getHighValue() != null && 
(aggregateData.getHighValue().compareTo(newData.getHighValue()) > 0) ? 
aggregateData .getHighValue() : newData.getHighValue();

{code}


> DecimalColumnStatsMergerTest comparison review
> ----------------------------------------------
>
>                 Key: HIVE-19131
>                 URL: https://issues.apache.org/jira/browse/HIVE-19131
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Laszlo Bodor
>            Priority: Major
>
> DecimalColumnStatsMergerTest has a strange comparison logic, which needs to 
> be reviewed.
> Regarding low and high values, it uses compareTo with the same direction, 
> which seems to be incorrect: old.compareTo(new) > 0 -> pick old value in both 
> cases
> {code:java}
> Decimal lowValue = aggregateData.getLowValue() != null && 
> (aggregateData.getLowValue().compareTo(newData.getLowValue()) > 0) ? 
> aggregateData .getLowValue() : newData.getLowValue(); 
> aggregateData.setLowValue(lowValue); 
> Decimal highValue = aggregateData.getHighValue() != null && 
> (aggregateData.getHighValue().compareTo(newData.getHighValue()) > 0) ? 
> aggregateData .getHighValue() : newData.getHighValue();
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to