@Override public void aggregate() { sum += selector.getDouble(); }
@Override public void aggregate() { max = Math.max(max, selector.getDouble()); }
@Override public void aggregate() { min = Math.min(min, selector.getDouble()); }
@Override public void addRowValuesToSelectResult( String outputName, BaseDoubleColumnValueSelector selector, Map<String, Object> resultMap ) { if (selector == null) { resultMap.put(outputName, null); } else { resultMap.put(outputName, selector.getDouble()); } } }
@Override public void aggregate() { long time = timeSelector.getLong(); if (time >= lastTime) { lastTime = time; lastValue = valueSelector.getDouble(); } }
@Override public void aggregate(ByteBuffer buf, int position) { long time = timeSelector.getLong(); long lastTime = buf.getLong(position); if (time >= lastTime) { buf.putLong(position, time); buf.putDouble(position + Long.BYTES, valueSelector.getDouble()); } }
@Override public void aggregate(ByteBuffer buf, int position) { long time = timeSelector.getLong(); long firstTime = buf.getLong(position); if (time < firstTime) { buf.putLong(position, time); buf.putDouble(position + Long.BYTES, valueSelector.getDouble()); } }
@Override public boolean matches() { if (selector.isNull()) { return false; } return Double.doubleToLongBits(selector.getDouble()) == matchValLongBits; }
@Override public ValueGetter makeValueGetter(final BaseDoubleColumnValueSelector selector) { return () -> { if (selector.isNull()) { return null; } return new String[]{Double.toString(selector.getDouble())}; }; } }
@Override public void aggregate() { long time = timeSelector.getLong(); if (time < firstTime) { firstTime = time; firstValue = valueSelector.getDouble(); } }
@Override public final void aggregate(ByteBuffer buf, int position) { aggregate(buf, position, selector.getDouble()); }
@Override public void hashValues(BaseDoubleColumnValueSelector selector, HyperLogLogCollector collector) { if (NullHandling.replaceWithDefault() || !selector.isNull()) { collector.add(CardinalityAggregator.hashFn.hashLong(Double.doubleToLongBits(selector.getDouble())).asBytes()); } } }
@Override public void updateSearchResultSet( String outputName, BaseDoubleColumnValueSelector selector, SearchQuerySpec searchQuerySpec, int limit, Object2IntRBTreeMap<SearchHit> set ) { if (selector != null) { final String dimVal = String.valueOf(selector.getDouble()); if (searchQuerySpec.accept(dimVal)) { set.addTo(new SearchHit(outputName, dimVal), 1); } } } }
@Override public boolean matches() { if (selector.isNull()) { return predicate.applyNull(); } return predicate.applyDouble(selector.getDouble()); }
@Override public void hashRow(BaseDoubleColumnValueSelector selector, Hasher hasher) { if (NullHandling.replaceWithDefault() || !selector.isNull()) { hasher.putDouble(selector.getDouble()); } }
@Override public void bufferAdd(ByteBuffer buf) { if (NullHandling.replaceWithDefault() || !selector.isNull()) { BloomKFilter.addDouble(buf, selector.getDouble()); } else { BloomKFilter.addBytes(buf, null, 0, 0); } } }
@Override public void aggregate() { if (NullHandling.replaceWithDefault() || !selector.isNull()) { collector.addDouble(selector.getDouble()); } else { collector.addBytes(null, 0, 0); } } }
/** * This method uses synchronization because it can be used during indexing, * and Druid can call aggregate() and get() concurrently * https://github.com/apache/incubator-druid/pull/3956 */ @Override public void aggregate() { final IndexedInts keys = keySelector.getRow(); for (int i = 0; i < valueSelectors.length; i++) { values[i] = valueSelectors[i].getDouble(); } synchronized (this) { for (int i = 0, keysSize = keys.size(); i < keysSize; i++) { final String key = keySelector.lookupName(keys.get(i)); sketch.update(key, values); } } }
static long doubleDimExtractionScanAndAggregate( TopNQuery query, BaseDoubleColumnValueSelector selector, Cursor cursor, Long2ObjectMap<Aggregator[]> aggregatesStore ) { long processedRows = 0; while (!cursor.isDone()) { long key = Double.doubleToLongBits(selector.getDouble()); Aggregator[] theAggregators = aggregatesStore.get(key); if (theAggregators == null) { theAggregators = BaseTopNAlgorithm.makeAggregators(cursor, query.getAggregatorSpecs()); aggregatesStore.put(key, theAggregators); } for (Aggregator aggregator : theAggregators) { aggregator.aggregate(); } cursor.advance(); processedRows++; } return processedRows; }