@Override public void aggregate() { sum += selector.getFloat(); }
@Override public void aggregate() { max = Math.max(max, selector.getFloat()); }
@Override public void aggregate() { min = Math.min(min, selector.getFloat()); }
@Override public void aggregate() { // In case of ExpressionColumnValueSelector isNull will compute the expression and then give the result, // the check for is NullHandling.replaceWithDefault is there to not have any performance impact of calling // isNull for default case. if (NullHandling.replaceWithDefault() || !selector.isNull()) { histogram.offer(selector.getFloat()); } }
@Override public void addRowValuesToSelectResult( String outputName, BaseFloatColumnValueSelector selector, Map<String, Object> resultMap ) { if (selector == null) { resultMap.put(outputName, null); } else { resultMap.put(outputName, selector.getFloat()); } } }
@Override public void aggregate(ByteBuffer buf, int position) { float v = selector.getFloat(); long count = buf.getLong(position + COUNT_OFFSET) + 1; double sum = buf.getDouble(position + SUM_OFFSET) + v; buf.putLong(position, count); buf.putDouble(position + SUM_OFFSET, sum); if (count > 1) { double t = count * v - sum; double variance = buf.getDouble(position + NVARIANCE_OFFSET) + (t * t) / ((double) count * (count - 1)); buf.putDouble(position + NVARIANCE_OFFSET, variance); } }
@Override public void aggregate() { long time = timeSelector.getLong(); if (time < firstTime) { firstTime = time; firstValue = valueSelector.getFloat(); } }
@Override public void aggregate() { long time = timeSelector.getLong(); if (time >= lastTime) { lastTime = time; lastValue = valueSelector.getFloat(); } }
@Test public void testFloatSelectorWithConstantNullArithmetic() { final BaseFloatColumnValueSelector selector = CONSTANT_NULL_ARITHMETIC.makeColumnValueSelector("expr", COLUMN_SELECTOR_FACTORY); CURRENT_ROW.set(ROW0); if (NullHandling.replaceWithDefault()) { Assert.assertEquals(2.1f, selector.getFloat(), 0.0f); Assert.assertFalse(selector.isNull()); } else { Assert.assertTrue(selector.isNull()); } }
@Override public void aggregate() { histogram.offer(selector.getFloat()); }
@Test public void testFloatSelector() { final BaseFloatColumnValueSelector selector = X_PLUS_Y.makeColumnValueSelector("expr", COLUMN_SELECTOR_FACTORY); CURRENT_ROW.set(ROW0); if (NullHandling.replaceWithDefault()) { Assert.assertEquals(0.0f, selector.getFloat(), 0.0f); } else { Assert.assertTrue(selector.isNull()); } CURRENT_ROW.set(ROW1); if (NullHandling.replaceWithDefault()) { Assert.assertEquals(4.0f, selector.getFloat(), 0.0f); } else { // y is null for row1 Assert.assertTrue(selector.isNull()); } CURRENT_ROW.set(ROW2); Assert.assertEquals(5.1f, selector.getFloat(), 0.0f); CURRENT_ROW.set(ROW3); Assert.assertEquals(5.0f, selector.getFloat(), 0.0f); }