@Override public void reset(ColumnValueSelector selector) { sum = selector.getDouble(); }
@Override public void fold(ColumnValueSelector selector) { sum += selector.getDouble(); }
@Override public void initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] values) { values[columnIndex] = selector.getDouble(); }
@Override public double getDouble() { // No Assert for null handling as baseSelector already have it. return baseSelector.getDouble(); }
@Override public void reset(ColumnValueSelector selector) { min = selector.getDouble(); }
@Override public void reset(ColumnValueSelector selector) { max = selector.getDouble(); }
@Override public Object getOnlyValue(ColumnValueSelector selector) { return selector.getDouble(); }
@Override public void reset(ColumnValueSelector selector) { combined = selector.getDouble(); }
@Override public void fold(ColumnValueSelector selector) { max = Math.max(max, selector.getDouble()); }
@Override public void fold(ColumnValueSelector selector) { min = Math.min(min, selector.getDouble()); }
@Override public synchronized void aggregate() { sketch.update(valueSelector.getDouble()); }
@Override public void serialize(ColumnValueSelector<?> selector) throws IOException { writer.add(selector.getDouble()); }
@Override public void setValueFrom(ColumnValueSelector<?> selector) { isNull = selector.isNull(); if (!isNull) { value = selector.getDouble(); } else { value = 0; } }
@Override public void fold(ColumnValueSelector selector) { JavaScriptAggregator.ScriptAggregator compiledScript = getCompiledScript(); combined = compiledScript.combine(combined, selector.getDouble()); }
@Override public synchronized void aggregate(final ByteBuffer buffer, final int position) { final UpdateDoublesSketch sketch = sketches.get(buffer).get(position); sketch.update(selector.getDouble()); }
@Override public void serialize(ColumnValueSelector<?> selector) throws IOException { if (selector.isNull()) { nullRowsBitmap.add(rowCount); writer.add(0D); } else { writer.add(selector.getDouble()); } rowCount++; }
@Test public void testLongSelectorOfTimeColumn() { final ColumnValueSelector selector = TIME_FLOOR.makeColumnValueSelector("expr", COLUMN_SELECTOR_FACTORY); CURRENT_ROW.set(ROW0); Assert.assertEquals(DateTimes.of("2000-01-01").getMillis(), selector.getLong()); Assert.assertEquals((float) DateTimes.of("2000-01-01").getMillis(), selector.getFloat(), 0.0f); Assert.assertEquals((double) DateTimes.of("2000-01-01").getMillis(), selector.getDouble(), 0.0d); Assert.assertEquals(DateTimes.of("2000-01-01").getMillis(), selector.getObject()); CURRENT_ROW.set(ROW1); Assert.assertEquals(DateTimes.of("2000-01-01").getMillis(), selector.getLong()); CURRENT_ROW.set(ROW2); Assert.assertEquals(DateTimes.of("2000-01-01").getMillis(), selector.getLong()); CURRENT_ROW.set(ROW3); Assert.assertEquals(DateTimes.of("2000-01-02").getMillis(), selector.getLong()); Assert.assertEquals(DateTimes.of("2000-01-02").getMillis(), selector.getDouble(), 0.0); }
@Test public void testExprEvalSelectorWithDoublesAndNulls() { final ColumnValueSelector<ExprEval> selector = ExpressionSelectors.makeExprEvalSelector( RowBasedColumnSelectorFactory.create( CURRENT_ROW, ImmutableMap.of("x", ValueType.DOUBLE) ), Parser.parse(SCALE_FLOAT.getExpression(), TestExprMacroTable.INSTANCE) ); CURRENT_ROW.set(ROW0); if (NullHandling.replaceWithDefault()) { Assert.assertEquals(0, selector.getDouble(), 0.0f); Assert.assertFalse(selector.isNull()); } else { Assert.assertTrue(selector.isNull()); Assert.assertTrue(selector.getObject().isNumericNull()); } }
@Override public void fold(ColumnValueSelector selector) { sum += selector.getDouble(); }
@Override public void setValueFrom(ColumnValueSelector<?> selector) { isNull = selector.isNull(); if (!isNull) { value = selector.getDouble(); } else { value = 0; } }