@Test public void testCapNumberOfDistinctValues() { PlanNodeStatsEstimate unknownRowCount = statistics(NaN, NaN, NaN, NON_EMPTY_RANGE); PlanNodeStatsEstimate unknownNumberOfDistinctValues = statistics(20, NaN, NaN, openRange(NaN)); PlanNodeStatsEstimate first = statistics(20, NaN, NaN, openRange(10)); PlanNodeStatsEstimate second = statistics(10, NaN, NaN, openRange(5)); assertCapNumberOfDistinctValues(unknownRowCount, unknownRowCount, NaN); assertCapNumberOfDistinctValues(unknownNumberOfDistinctValues, unknownNumberOfDistinctValues, NaN); assertCapNumberOfDistinctValues(first, unknownRowCount, NaN); assertCapNumberOfDistinctValues(unknownNumberOfDistinctValues, second, NaN); assertCapNumberOfDistinctValues(first, second, 5); }
@Test public void testSubtractNumberOfDistinctValues() { PlanNodeStatsEstimate unknownRowCount = statistics(NaN, NaN, NaN, NON_EMPTY_RANGE); PlanNodeStatsEstimate unknownDistinctValues = statistics(100, 0.1, NaN, openRange(NaN)); PlanNodeStatsEstimate zero = statistics(0, 0.1, NaN, openRange(0)); PlanNodeStatsEstimate first = statistics(30, 0.1, NaN, openRange(10)); PlanNodeStatsEstimate second = statistics(20, 0.1, NaN, openRange(5)); PlanNodeStatsEstimate third = statistics(10, 0.1, NaN, openRange(3)); assertSubtractNumberOfDistinctValues(unknownRowCount, unknownRowCount, NaN); assertSubtractNumberOfDistinctValues(unknownRowCount, second, NaN); assertSubtractNumberOfDistinctValues(unknownDistinctValues, second, NaN); assertSubtractNumberOfDistinctValues(first, zero, 10); assertSubtractNumberOfDistinctValues(zero, zero, 0); assertSubtractNumberOfDistinctValues(first, second, 5); assertSubtractNumberOfDistinctValues(second, third, 5); }
@Test public void testSumNumberOfDistinctValues() { PlanNodeStatsEstimate unknownRowCount = statistics(NaN, NaN, NaN, NON_EMPTY_RANGE); PlanNodeStatsEstimate emptyRange = statistics(10, NaN, NaN, StatisticRange.empty()); PlanNodeStatsEstimate unknownRange = statistics(10, NaN, NaN, openRange(NaN)); PlanNodeStatsEstimate first = statistics(10, NaN, NaN, openRange(2)); PlanNodeStatsEstimate second = statistics(10, NaN, NaN, openRange(3)); assertSumNumberOfDistinctValues(unknownRowCount, unknownRowCount, NaN); assertSumNumberOfDistinctValues(unknownRowCount, second, NaN); assertSumNumberOfDistinctValues(first, emptyRange, 2); assertSumNumberOfDistinctValues(first, unknownRange, NaN); assertSumNumberOfDistinctValues(first, second, 5); }
@Test public void testMaxNumberOfDistinctValues() { PlanNodeStatsEstimate unknownRowCount = statistics(NaN, NaN, NaN, NON_EMPTY_RANGE); PlanNodeStatsEstimate emptyRange = statistics(10, NaN, NaN, StatisticRange.empty()); PlanNodeStatsEstimate unknownRange = statistics(10, NaN, NaN, openRange(NaN)); PlanNodeStatsEstimate first = statistics(10, NaN, NaN, openRange(2)); PlanNodeStatsEstimate second = statistics(10, NaN, NaN, openRange(3)); assertMaxNumberOfDistinctValues(unknownRowCount, unknownRowCount, NaN); assertMaxNumberOfDistinctValues(unknownRowCount, second, NaN); assertMaxNumberOfDistinctValues(first, emptyRange, 2); assertMaxNumberOfDistinctValues(first, unknownRange, NaN); assertMaxNumberOfDistinctValues(first, second, 3); }
@Test public void testCapRange() { PlanNodeStatsEstimate emptyRange = statistics(10, NaN, NaN, StatisticRange.empty()); PlanNodeStatsEstimate openRange = statistics(10, NaN, NaN, openRange(NaN)); PlanNodeStatsEstimate first = statistics(10, NaN, NaN, new StatisticRange(12, 100, NaN)); PlanNodeStatsEstimate second = statistics(10, NaN, NaN, new StatisticRange(13, 99, NaN)); assertCapRange(emptyRange, emptyRange, NaN, NaN); assertCapRange(emptyRange, openRange, NaN, NaN); assertCapRange(openRange, emptyRange, NaN, NaN); assertCapRange(first, openRange, 12, 100); assertCapRange(openRange, second, 13, 99); assertCapRange(first, second, 13, 99); }
@Test public void testAddRange() { PlanNodeStatsEstimate unknownRowCount = statistics(NaN, NaN, NaN, NON_EMPTY_RANGE); PlanNodeStatsEstimate emptyRange = statistics(10, NaN, NaN, StatisticRange.empty()); PlanNodeStatsEstimate unknownRange = statistics(10, NaN, NaN, openRange(NaN)); PlanNodeStatsEstimate first = statistics(10, NaN, NaN, new StatisticRange(12, 100, 2)); PlanNodeStatsEstimate second = statistics(10, NaN, NaN, new StatisticRange(101, 200, 3)); assertAddRange(unknownRange, unknownRange, NEGATIVE_INFINITY, POSITIVE_INFINITY); assertAddRange(unknownRowCount, second, NEGATIVE_INFINITY, POSITIVE_INFINITY); assertAddRange(unknownRange, second, NEGATIVE_INFINITY, POSITIVE_INFINITY); assertAddRange(emptyRange, second, 101, 200); assertAddRange(first, second, 12, 200); }