Zoltan Haindrich created HIVE-17555:
---------------------------------------

             Summary: StatsUtils considers all ranges to be 'long'; and loose 
precision / introduce bugs in some cases
                 Key: HIVE-17555
                 URL: https://issues.apache.org/jira/browse/HIVE-17555
             Project: Hive
          Issue Type: Bug
            Reporter: Zoltan Haindrich


The following test fails because the combined range is: {{\[0:0\]}}

This problem is present in other methods of StatsUtil as well

{code}
package org.apache.hadoop.hive.ql.stats;

import static org.junit.Assert.assertTrue;

import org.apache.hadoop.hive.ql.plan.ColStatistics.Range;
import org.junit.Test;

public class TestStatsUtils {

  @Test
  public void test1() {
    Range r1 = new Range(0.1f, 0.4f);
    Range r2 = new Range(0.3f, 0.9f);
    assertTrue(rangeContains(r1, 0.2f));
    Range r3 = StatsUtils.combineRange(r1, r2);
    System.out.println(r3);
    assertTrue(rangeContains(r3, 0.2f));
  }

  private boolean rangeContains(Range range, Number f) {
    double m = range.minValue.doubleValue();
    double M = range.maxValue.doubleValue();
    double v = f.doubleValue();
    return m <= v && v <= M;
  }

}
{code}

https://github.com/apache/hive/blob/32e854ef1c25f21d53f7932723cfc76bf75a71cd/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java#L1955



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to