Polymorphic numeric getters for ColumnValueSelector (#4623)

* Add methods getFloat(), getDouble() and getLong() to ColumnValueSelector

* Fix copy-paste mistake in docs

* Spelling
This commit is contained in:
Roman Leventov 2017-08-09 04:38:06 +03:00 committed by Gian Merlino
parent d5606bc558
commit 7454fd86a0
83 changed files with 356 additions and 199 deletions

View File

@ -215,8 +215,8 @@ public class ExpressionBenchmark
@Override
public void aggregate(final ByteBuffer buf, final int position)
{
final float x = xSelector.get();
final double n = x > 0 ? x + 1 : ySelector.get() + 1;
final float x = xSelector.getFloat();
final double n = x > 0 ? x + 1 : ySelector.getFloat() + 1;
buf.putDouble(0, buf.getDouble(position) + n);
}

View File

@ -542,7 +542,7 @@ public class FilterPartitionBenchmark
List<Long> longvals = new ArrayList<Long>();
LongColumnSelector selector = input.makeLongColumnSelector("sumLongSequential");
while (!input.isDone()) {
long rowval = selector.get();
long rowval = selector.getLong();
blackhole.consume(rowval);
input.advance();
}

View File

@ -65,7 +65,7 @@ public class ApproximateHistogramAggregator implements Aggregator
@Override
public void aggregate()
{
histogram.offer(selector.get());
histogram.offer(selector.getFloat());
}
@Override

View File

@ -68,7 +68,7 @@ public class ApproximateHistogramBufferAggregator implements BufferAggregator
mutationBuffer.position(position);
ApproximateHistogram h0 = ApproximateHistogram.fromBytesDense(mutationBuffer);
h0.offer(selector.get());
h0.offer(selector.getFloat());
mutationBuffer.position(position);
h0.toBytesDense(mutationBuffer);

View File

@ -82,7 +82,7 @@ public abstract class VarianceAggregator implements Aggregator
@Override
public void aggregate()
{
holder.add(selector.get());
holder.add(selector.getFloat());
}
}
@ -99,7 +99,7 @@ public abstract class VarianceAggregator implements Aggregator
@Override
public void aggregate()
{
holder.add(selector.get());
holder.add(selector.getLong());
}
}

View File

@ -98,7 +98,7 @@ public abstract class VarianceBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
float v = selector.get();
float v = selector.getFloat();
long count = buf.getLong(position + COUNT_OFFSET) + 1;
double sum = buf.getDouble(position + SUM_OFFSET) + v;
buf.putLong(position, count);
@ -130,7 +130,7 @@ public abstract class VarianceBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long v = selector.get();
long v = selector.getLong();
long count = buf.getLong(position + COUNT_OFFSET) + 1;
double sum = buf.getDouble(position + SUM_OFFSET) + v;
buf.putLong(position, count);

View File

@ -146,7 +146,7 @@ public class VarianceAggregatorCollectorTest
float v;
@Override
public float get()
public float getFloat()
{
return v;
}

View File

@ -48,7 +48,7 @@ public class DoubleMaxAggregator implements Aggregator
@Override
public void aggregate()
{
max = Math.max(max, selector.get());
max = Math.max(max, selector.getDouble());
}
@Override

View File

@ -48,7 +48,7 @@ public class DoubleMinAggregator implements Aggregator
@Override
public void aggregate()
{
min = Math.min(min, (double) selector.get());
min = Math.min(min, selector.getDouble());
}
@Override

View File

@ -57,7 +57,7 @@ public class DoubleSumAggregator implements Aggregator
@Override
public void aggregate()
{
sum += selector.get();
sum += selector.getDouble();
}
@Override

View File

@ -48,7 +48,7 @@ public class FloatMaxAggregator implements Aggregator
@Override
public void aggregate()
{
max = Math.max(max, selector.get());
max = Math.max(max, selector.getFloat());
}
@Override

View File

@ -48,7 +48,7 @@ public class FloatMinAggregator implements Aggregator
@Override
public void aggregate()
{
min = Math.min(min, selector.get());
min = Math.min(min, selector.getFloat());
}
@Override

View File

@ -56,7 +56,7 @@ public class FloatSumAggregator implements Aggregator
@Override
public void aggregate()
{
sum += selector.get();
sum += selector.getFloat();
}
@Override

View File

@ -53,7 +53,7 @@ public class HistogramAggregator implements Aggregator
@Override
public void aggregate()
{
histogram.offer(selector.get());
histogram.offer(selector.getFloat());
}
@Override

View File

@ -57,7 +57,7 @@ public class HistogramBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
final float value = selector.get();
final float value = selector.getFloat();
final int minPos = position + minOffset;
final int maxPos = position + maxOffset;

View File

@ -48,7 +48,7 @@ public class LongMaxAggregator implements Aggregator
@Override
public void aggregate()
{
max = Math.max(max, selector.get());
max = Math.max(max, selector.getLong());
}
@Override

View File

@ -42,6 +42,6 @@ public class LongMaxBufferAggregator extends LongBufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
buf.putLong(position, Math.max(buf.getLong(position), selector.get()));
buf.putLong(position, Math.max(buf.getLong(position), selector.getLong()));
}
}

View File

@ -48,7 +48,7 @@ public class LongMinAggregator implements Aggregator
@Override
public void aggregate()
{
min = Math.min(min, selector.get());
min = Math.min(min, selector.getLong());
}
@Override

View File

@ -42,6 +42,6 @@ public class LongMinBufferAggregator extends LongBufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
buf.putLong(position, Math.min(buf.getLong(position), selector.get()));
buf.putLong(position, Math.min(buf.getLong(position), selector.getLong()));
}
}

View File

@ -56,7 +56,7 @@ public class LongSumAggregator implements Aggregator
@Override
public void aggregate()
{
sum += selector.get();
sum += selector.getLong();
}
@Override

View File

@ -42,6 +42,6 @@ public class LongSumBufferAggregator extends LongBufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
buf.putLong(position, buf.getLong(position) + selector.get());
buf.putLong(position, buf.getLong(position) + selector.getLong());
}
}

View File

@ -53,7 +53,7 @@ public abstract class SimpleDoubleBufferAggregator implements BufferAggregator
@Override
public final void aggregate(ByteBuffer buf, int position)
{
aggregate(buf, position, selector.get());
aggregate(buf, position, selector.getDouble());
}
@Override

View File

@ -53,7 +53,7 @@ public abstract class SimpleFloatBufferAggregator implements BufferAggregator
@Override
public final void aggregate(ByteBuffer buf, int position)
{
aggregate(buf, position, selector.get());
aggregate(buf, position, selector.getFloat());
}
@Override

View File

@ -30,12 +30,12 @@ public class DoubleCardinalityAggregatorColumnSelectorStrategy implements Cardin
@Override
public void hashRow(DoubleColumnSelector dimSelector, Hasher hasher)
{
hasher.putDouble(dimSelector.get());
hasher.putDouble(dimSelector.getDouble());
}
@Override
public void hashValues(DoubleColumnSelector dimSelector, HyperLogLogCollector collector)
{
collector.add(CardinalityAggregator.hashFn.hashLong(Double.doubleToLongBits(dimSelector.get())).asBytes());
collector.add(CardinalityAggregator.hashFn.hashLong(Double.doubleToLongBits(dimSelector.getDouble())).asBytes());
}
}

View File

@ -30,12 +30,12 @@ public class FloatCardinalityAggregatorColumnSelectorStrategy
@Override
public void hashRow(FloatColumnSelector dimSelector, Hasher hasher)
{
hasher.putFloat(dimSelector.get());
hasher.putFloat(dimSelector.getFloat());
}
@Override
public void hashValues(FloatColumnSelector dimSelector, HyperLogLogCollector collector)
{
collector.add(CardinalityAggregator.hashFn.hashInt(Float.floatToIntBits(dimSelector.get())).asBytes());
collector.add(CardinalityAggregator.hashFn.hashInt(Float.floatToIntBits(dimSelector.getFloat())).asBytes());
}
}

View File

@ -30,12 +30,12 @@ public class LongCardinalityAggregatorColumnSelectorStrategy
@Override
public void hashRow(LongColumnSelector dimSelector, Hasher hasher)
{
hasher.putLong(dimSelector.get());
hasher.putLong(dimSelector.getLong());
}
@Override
public void hashValues(LongColumnSelector dimSelector, HyperLogLogCollector collector)
{
collector.add(CardinalityAggregator.hashFn.hashLong(dimSelector.get()).asBytes());
collector.add(CardinalityAggregator.hashFn.hashLong(dimSelector.getLong()).asBytes());
}
}

View File

@ -50,10 +50,10 @@ public class DoubleFirstAggregator implements Aggregator
@Override
public void aggregate()
{
long time = timeSelector.get();
long time = timeSelector.getLong();
if (time < firstTime) {
firstTime = time;
firstValue = valueSelector.get();
firstValue = valueSelector.getDouble();
}
}

View File

@ -48,11 +48,11 @@ public class DoubleFirstBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long time = timeSelector.get();
long time = timeSelector.getLong();
long firstTime = buf.getLong(position);
if (time < firstTime) {
buf.putLong(position, time);
buf.putDouble(position + Long.BYTES, valueSelector.get());
buf.putDouble(position + Long.BYTES, valueSelector.getDouble());
}
}

View File

@ -50,10 +50,10 @@ public class FloatFirstAggregator implements Aggregator
@Override
public void aggregate()
{
long time = timeSelector.get();
long time = timeSelector.getLong();
if (time < firstTime) {
firstTime = time;
firstValue = valueSelector.get();
firstValue = valueSelector.getFloat();
}
}

View File

@ -48,11 +48,11 @@ public class FloatFirstBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long time = timeSelector.get();
long time = timeSelector.getLong();
long firstTime = buf.getLong(position);
if (time < firstTime) {
buf.putLong(position, time);
buf.putFloat(position + Long.BYTES, valueSelector.get());
buf.putFloat(position + Long.BYTES, valueSelector.getFloat());
}
}

View File

@ -49,10 +49,10 @@ public class LongFirstAggregator implements Aggregator
@Override
public void aggregate()
{
long time = timeSelector.get();
long time = timeSelector.getLong();
if (time < firstTime) {
firstTime = time;
firstValue = valueSelector.get();
firstValue = valueSelector.getLong();
}
}

View File

@ -48,11 +48,11 @@ public class LongFirstBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long time = timeSelector.get();
long time = timeSelector.getLong();
long firstTime = buf.getLong(position);
if (time < firstTime) {
buf.putLong(position, time);
buf.putLong(position + Longs.BYTES, valueSelector.get());
buf.putLong(position + Longs.BYTES, valueSelector.getLong());
}
}

View File

@ -50,10 +50,10 @@ public class DoubleLastAggregator implements Aggregator
@Override
public void aggregate()
{
long time = timeSelector.get();
long time = timeSelector.getLong();
if (time >= lastTime) {
lastTime = timeSelector.get();
lastValue = valueSelector.get();
lastTime = time;
lastValue = valueSelector.getDouble();
}
}

View File

@ -48,11 +48,11 @@ public class DoubleLastBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long time = timeSelector.get();
long time = timeSelector.getLong();
long lastTime = buf.getLong(position);
if (time >= lastTime) {
buf.putLong(position, time);
buf.putDouble(position + Long.BYTES, valueSelector.get());
buf.putDouble(position + Long.BYTES, valueSelector.getDouble());
}
}

View File

@ -48,10 +48,10 @@ public class FloatLastAggregator implements Aggregator
@Override
public void aggregate()
{
long time = timeSelector.get();
long time = timeSelector.getLong();
if (time >= lastTime) {
lastTime = timeSelector.get();
lastValue = valueSelector.get();
lastTime = time;
lastValue = valueSelector.getFloat();
}
}

View File

@ -48,11 +48,11 @@ public class FloatLastBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long time = timeSelector.get();
long time = timeSelector.getLong();
long lastTime = buf.getLong(position);
if (time >= lastTime) {
buf.putLong(position, time);
buf.putFloat(position + Long.BYTES, valueSelector.get());
buf.putFloat(position + Long.BYTES, valueSelector.getFloat());
}
}

View File

@ -48,10 +48,10 @@ public class LongLastAggregator implements Aggregator
@Override
public void aggregate()
{
long time = timeSelector.get();
long time = timeSelector.getLong();
if (time >= lastTime) {
lastTime = timeSelector.get();
lastValue = valueSelector.get();
lastTime = time;
lastValue = valueSelector.getLong();
}
}

View File

@ -47,11 +47,11 @@ public class LongLastBufferAggregator implements BufferAggregator
@Override
public void aggregate(ByteBuffer buf, int position)
{
long time = timeSelector.get();
long time = timeSelector.getLong();
long lastTime = buf.getLong(position);
if (time >= lastTime) {
buf.putLong(position, time);
buf.putLong(position + Long.BYTES, valueSelector.get());
buf.putLong(position + Long.BYTES, valueSelector.getLong());
}
}

View File

@ -41,7 +41,7 @@ public class DoubleValueMatcherColumnSelectorStrategy implements ValueMatcherCol
@Override
public boolean matches()
{
return Double.doubleToLongBits(selector.get()) == matchValLongBits;
return Double.doubleToLongBits(selector.getDouble()) == matchValLongBits;
}
@Override
@ -63,7 +63,7 @@ public class DoubleValueMatcherColumnSelectorStrategy implements ValueMatcherCol
@Override
public boolean matches()
{
return predicate.applyDouble(selector.get());
return predicate.applyDouble(selector.getDouble());
}
@Override
@ -83,7 +83,7 @@ public class DoubleValueMatcherColumnSelectorStrategy implements ValueMatcherCol
@Override
public String[] get()
{
return new String[]{Double.toString(selector.get())};
return new String[]{Double.toString(selector.getDouble())};
}
};
}

View File

@ -40,7 +40,7 @@ public class FloatValueMatcherColumnSelectorStrategy implements ValueMatcherColu
@Override
public boolean matches()
{
return Float.floatToIntBits(selector.get()) == matchValIntBits;
return Float.floatToIntBits(selector.getFloat()) == matchValIntBits;
}
@Override
@ -62,7 +62,7 @@ public class FloatValueMatcherColumnSelectorStrategy implements ValueMatcherColu
@Override
public boolean matches()
{
return predicate.applyFloat(selector.get());
return predicate.applyFloat(selector.getFloat());
}
@Override
@ -82,7 +82,7 @@ public class FloatValueMatcherColumnSelectorStrategy implements ValueMatcherColu
@Override
public String[] get()
{
return new String[]{Float.toString(selector.get())};
return new String[]{Float.toString(selector.getFloat())};
}
};
}

View File

@ -39,7 +39,7 @@ public class LongValueMatcherColumnSelectorStrategy implements ValueMatcherColum
@Override
public boolean matches()
{
return selector.get() == matchValLong;
return selector.getLong() == matchValLong;
}
@Override
@ -61,7 +61,7 @@ public class LongValueMatcherColumnSelectorStrategy implements ValueMatcherColum
@Override
public boolean matches()
{
return predicate.applyLong(selector.get());
return predicate.applyLong(selector.getLong());
}
@Override
@ -81,7 +81,7 @@ public class LongValueMatcherColumnSelectorStrategy implements ValueMatcherColum
@Override
public String[] get()
{
return new String[]{Long.toString(selector.get())};
return new String[]{Long.toString(selector.getLong())};
}
};
}

View File

@ -373,7 +373,7 @@ public class RowBasedColumnSelectorFactory implements ColumnSelectorFactory
class TimeFloatColumnSelector extends RowBasedFloatColumnSelector
{
@Override
public float get()
public float getFloat()
{
return (float) row.get().getTimestampFromEpoch();
}
@ -383,7 +383,7 @@ public class RowBasedColumnSelectorFactory implements ColumnSelectorFactory
return new RowBasedFloatColumnSelector()
{
@Override
public float get()
public float getFloat()
{
return row.get().getFloatMetric(columnName);
}
@ -406,7 +406,7 @@ public class RowBasedColumnSelectorFactory implements ColumnSelectorFactory
class TimeLongColumnSelector extends RowBasedLongColumnSelector
{
@Override
public long get()
public long getLong()
{
return row.get().getTimestampFromEpoch();
}
@ -416,7 +416,7 @@ public class RowBasedColumnSelectorFactory implements ColumnSelectorFactory
return new RowBasedLongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return row.get().getLongMetric(columnName);
}
@ -475,7 +475,7 @@ public class RowBasedColumnSelectorFactory implements ColumnSelectorFactory
class TimeDoubleColumnSelector extends RowBasedDoubleColumnSelector
{
@Override
public double get()
public double getDouble()
{
return (double) row.get().getTimestampFromEpoch();
}
@ -485,7 +485,7 @@ public class RowBasedColumnSelectorFactory implements ColumnSelectorFactory
return new RowBasedDoubleColumnSelector()
{
@Override
public double get()
public double getDouble()
{
return row.get().getDoubleMetric(columnName);
}

View File

@ -487,11 +487,13 @@ public class RowBasedGrouperHelper
case STRING:
return new StringInputRawSupplierColumnSelectorStrategy();
case LONG:
return (InputRawSupplierColumnSelectorStrategy<LongColumnSelector>) columnSelector -> columnSelector::get;
return (InputRawSupplierColumnSelectorStrategy<LongColumnSelector>) columnSelector -> columnSelector::getLong;
case FLOAT:
return (InputRawSupplierColumnSelectorStrategy<FloatColumnSelector>) columnSelector -> columnSelector::get;
return (InputRawSupplierColumnSelectorStrategy<FloatColumnSelector>)
columnSelector -> columnSelector::getFloat;
case DOUBLE:
return (InputRawSupplierColumnSelectorStrategy<DoubleColumnSelector>) columnSelector -> columnSelector::get;
return (InputRawSupplierColumnSelectorStrategy<DoubleColumnSelector>)
columnSelector -> columnSelector::getDouble;
default:
throw new IAE("Cannot create query type helper from invalid type [%s]", type);
}

View File

@ -21,7 +21,6 @@ package io.druid.query.groupby.epinephelinae.column;
import io.druid.segment.ColumnValueSelector;
import io.druid.segment.DoubleColumnSelector;
import java.nio.ByteBuffer;
import java.util.Map;
@ -46,7 +45,19 @@ public class DoubleGroupByColumnSelectorStrategy implements GroupByColumnSelecto
@Override
public void initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] values)
{
values[columnIndex] = ((DoubleColumnSelector) selector).get();
values[columnIndex] = selector.getDouble();
}
@Override
public Object getOnlyValue(ColumnValueSelector selector)
{
return selector.getDouble();
}
@Override
public void writeToKeyBuffer(int keyBufferPosition, Object obj, ByteBuffer keyBuffer)
{
keyBuffer.putDouble(keyBufferPosition, (Double) obj);
}
@Override
@ -67,16 +78,4 @@ public class DoubleGroupByColumnSelectorStrategy implements GroupByColumnSelecto
// this method handles row values after the first in a multivalued row, so just return false
return false;
}
@Override
public Object getOnlyValue(ColumnValueSelector selector)
{
return ((DoubleColumnSelector) selector).get();
}
@Override
public void writeToKeyBuffer(int keyBufferPosition, Object obj, ByteBuffer keyBuffer)
{
keyBuffer.putDouble(keyBufferPosition, (Double) obj);
}
}

View File

@ -21,7 +21,6 @@ package io.druid.query.groupby.epinephelinae.column;
import com.google.common.primitives.Floats;
import io.druid.segment.ColumnValueSelector;
import io.druid.segment.FloatColumnSelector;
import java.nio.ByteBuffer;
import java.util.Map;
@ -47,13 +46,13 @@ public class FloatGroupByColumnSelectorStrategy implements GroupByColumnSelector
@Override
public void initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] valuess)
{
valuess[columnIndex] = ((FloatColumnSelector) selector).get();
valuess[columnIndex] = selector.getFloat();
}
@Override
public Object getOnlyValue(ColumnValueSelector selector)
{
return ((FloatColumnSelector) selector).get();
return selector.getFloat();
}
@Override

View File

@ -21,7 +21,6 @@ package io.druid.query.groupby.epinephelinae.column;
import com.google.common.primitives.Longs;
import io.druid.segment.ColumnValueSelector;
import io.druid.segment.LongColumnSelector;
import java.nio.ByteBuffer;
import java.util.Map;
@ -47,13 +46,13 @@ public class LongGroupByColumnSelectorStrategy implements GroupByColumnSelectorS
@Override
public void initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] valuess)
{
valuess[columnIndex] = ((LongColumnSelector) selector).get();
valuess[columnIndex] = selector.getLong();
}
@Override
public Object getOnlyValue(ColumnValueSelector selector)
{
return ((LongColumnSelector) selector).get();
return selector.getLong();
}
@Override

View File

@ -159,7 +159,7 @@ public class SearchQueryRunner implements QueryRunner<Result<SearchResultValue>>
)
{
if (selector != null) {
final String dimVal = String.valueOf(selector.get());
final String dimVal = String.valueOf(selector.getLong());
if (searchQuerySpec.accept(dimVal)) {
set.addTo(new SearchHit(outputName, dimVal), 1);
}
@ -179,7 +179,7 @@ public class SearchQueryRunner implements QueryRunner<Result<SearchResultValue>>
)
{
if (selector != null) {
final String dimVal = String.valueOf(selector.get());
final String dimVal = String.valueOf(selector.getFloat());
if (searchQuerySpec.accept(dimVal)) {
set.addTo(new SearchHit(outputName, dimVal), 1);
}
@ -199,7 +199,7 @@ public class SearchQueryRunner implements QueryRunner<Result<SearchResultValue>>
)
{
if (selector != null) {
final String dimVal = String.valueOf(selector.get());
final String dimVal = String.valueOf(selector.getDouble());
if (searchQuerySpec.accept(dimVal)) {
set.addTo(new SearchHit(outputName, dimVal), 1);
}

View File

@ -143,7 +143,7 @@ public class SelectQueryEngine
if (dimSelector == null) {
resultMap.put(outputName, null);
} else {
resultMap.put(outputName, dimSelector.get());
resultMap.put(outputName, dimSelector.getLong());
}
}
}
@ -158,7 +158,7 @@ public class SelectQueryEngine
if (dimSelector == null) {
resultMap.put(outputName, null);
} else {
resultMap.put(outputName, dimSelector.get());
resultMap.put(outputName, dimSelector.getFloat());
}
}
}
@ -174,7 +174,7 @@ public class SelectQueryEngine
if (dimSelector == null) {
resultMap.put(outputName, null);
} else {
resultMap.put(outputName, dimSelector.get());
resultMap.put(outputName, dimSelector.getDouble());
}
}
}
@ -300,7 +300,7 @@ public class SelectQueryEngine
)
{
final Map<String, Object> theEvent = Maps.newLinkedHashMap();
theEvent.put(timestampKey, new DateTime(timestampColumnSelector.get()));
theEvent.put(timestampKey, new DateTime(timestampColumnSelector.getLong()));
for (ColumnSelectorPlus<SelectColumnSelectorStrategy> selectorPlus : selectorPlusList) {
selectorPlus.getColumnSelectorStrategy().addRowValuesToSelectResult(selectorPlus.getOutputName(), selectorPlus.getSelector(), theEvent);

View File

@ -103,7 +103,7 @@ public class TimeBoundaryQueryRunnerFactory
return null;
}
final LongColumnSelector timestampColumnSelector = cursor.makeLongColumnSelector(Column.TIME_COLUMN_NAME);
final DateTime timestamp = new DateTime(timestampColumnSelector.get());
final DateTime timestamp = new DateTime(timestampColumnSelector.getLong());
return new Result<>(adapter.getInterval().getStart(), timestamp);
}
};

View File

@ -67,7 +67,7 @@ public abstract class NumericTopNColumnSelectorStrategy<
{
long processedRows = 0;
while (!cursor.isDone()) {
int key = Float.floatToIntBits(selector.get());
int key = Float.floatToIntBits(selector.getFloat());
Aggregator[] theAggregators = aggregatesStore.get(key);
if (theAggregators == null) {
theAggregators = BaseTopNAlgorithm.makeAggregators(cursor, query.getAggregatorSpecs());
@ -91,7 +91,7 @@ public abstract class NumericTopNColumnSelectorStrategy<
{
long processedRows = 0;
while (!cursor.isDone()) {
long key = Double.doubleToLongBits(selector.get());
long key = Double.doubleToLongBits(selector.getDouble());
Aggregator[] theAggregators = aggregatesStore.get(key);
if (theAggregators == null) {
theAggregators = BaseTopNAlgorithm.makeAggregators(cursor, query.getAggregatorSpecs());
@ -115,7 +115,7 @@ public abstract class NumericTopNColumnSelectorStrategy<
{
long processedRows = 0;
while (!cursor.isDone()) {
long key = selector.get();
long key = selector.getLong();
Aggregator[] theAggregators = aggregatesStore.get(key);
if (theAggregators == null) {
theAggregators = BaseTopNAlgorithm.makeAggregators(cursor, query.getAggregatorSpecs());

View File

@ -21,7 +21,16 @@ package io.druid.segment;
/**
* Base type for interfaces that manage column value selection, e.g. DimensionSelector, LongColumnSelector
*
* This interface has methods to get the value in all primitive types, that have corresponding basic aggregators in
* Druid: Sum, Min, Max, etc: {@link #getFloat()}, {@link #getDouble()} and {@link #getLong()} to support "polymorphic"
* rollup aggregation during index merging.
*/
public interface ColumnValueSelector
{
float getFloat();
double getDouble();
long getLong();
}

View File

@ -117,4 +117,34 @@ public interface DimensionSelector extends ColumnValueSelector, HotLoopCallee
*/
@Nullable
IdLookup idLookup();
/**
* @deprecated always throws {@link UnsupportedOperationException}
*/
@Deprecated
@Override
default float getFloat()
{
throw new UnsupportedOperationException("DimensionSelector cannot be operated as numeric ColumnValueSelector");
}
/**
* @deprecated always throws {@link UnsupportedOperationException}
*/
@Deprecated
@Override
default double getDouble()
{
throw new UnsupportedOperationException("DimensionSelector cannot be operated as numeric ColumnValueSelector");
}
/**
* @deprecated always throws {@link UnsupportedOperationException}
*/
@Deprecated
@Override
default long getLong()
{
throw new UnsupportedOperationException("DimensionSelector cannot be operated as numeric ColumnValueSelector");
}
}

View File

@ -26,5 +26,32 @@ import io.druid.query.monomorphicprocessing.HotLoopCallee;
public interface DoubleColumnSelector extends ColumnValueSelector, HotLoopCallee
{
@CalledFromHotLoop
double get();
@Override
double getDouble();
/**
* @deprecated This method is marked as deprecated in DoubleColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of DoubleColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@CalledFromHotLoop
@Override
default float getFloat()
{
return (float) getDouble();
}
/**
* @deprecated This method is marked as deprecated in DoubleColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of DoubleColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@CalledFromHotLoop
@Override
default long getLong()
{
return (long) getDouble();
}
}

View File

@ -104,7 +104,7 @@ public class DoubleDimensionIndexer implements DimensionIndexer<Double, Double,
class IndexerLongColumnSelector implements LongColumnSelector
{
@Override
public long get()
public long getLong()
{
final Object[] dims = currEntry.getKey().getDims();
@ -135,7 +135,7 @@ public class DoubleDimensionIndexer implements DimensionIndexer<Double, Double,
class IndexerFloatColumnSelector implements FloatColumnSelector
{
@Override
public float get()
public float getFloat()
{
final Object[] dims = currEntry.getKey().getDims();
@ -196,7 +196,7 @@ public class DoubleDimensionIndexer implements DimensionIndexer<Double, Double,
class IndexerDoubleColumnSelector implements DoubleColumnSelector
{
@Override
public double get()
public double getDouble()
{
final Object[] dims = currEntry.getKey().getDims();

View File

@ -39,9 +39,9 @@ public class DoubleWrappingDimensionSelector extends BaseSingleValueDimensionSel
protected String getValue()
{
if (extractionFn == null) {
return String.valueOf(selector.get());
return String.valueOf(selector.getDouble());
} else {
return extractionFn.apply(selector.get());
return extractionFn.apply(selector.getDouble());
}
}

View File

@ -30,5 +30,32 @@ import io.druid.query.monomorphicprocessing.HotLoopCallee;
public interface FloatColumnSelector extends ColumnValueSelector, HotLoopCallee
{
@CalledFromHotLoop
public float get();
@Override
float getFloat();
/**
* @deprecated This method is marked as deprecated in FloatColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of FloatColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@CalledFromHotLoop
@Override
default double getDouble()
{
return getFloat();
}
/**
* @deprecated This method is marked as deprecated in FloatColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of FloatColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@CalledFromHotLoop
@Override
default long getLong()
{
return (long) getFloat();
}
}

View File

@ -106,7 +106,7 @@ public class FloatDimensionIndexer implements DimensionIndexer<Float, Float, Flo
class IndexerLongColumnSelector implements LongColumnSelector
{
@Override
public long get()
public long getLong()
{
final Object[] dims = currEntry.getKey().getDims();
@ -138,7 +138,7 @@ public class FloatDimensionIndexer implements DimensionIndexer<Float, Float, Flo
class IndexerFloatColumnSelector implements FloatColumnSelector
{
@Override
public float get()
public float getFloat()
{
final Object[] dims = currEntry.getKey().getDims();
@ -200,7 +200,7 @@ public class FloatDimensionIndexer implements DimensionIndexer<Float, Float, Flo
class IndexerDoubleColumnSelector implements DoubleColumnSelector
{
@Override
public double get()
public double getDouble()
{
final Object[] dims = currEntry.getKey().getDims();

View File

@ -38,9 +38,9 @@ public class FloatWrappingDimensionSelector extends BaseSingleValueDimensionSele
protected String getValue()
{
if (extractionFn == null) {
return String.valueOf(selector.get());
return String.valueOf(selector.getFloat());
} else {
return extractionFn.apply(selector.get());
return extractionFn.apply(selector.getFloat());
}
}

View File

@ -27,5 +27,32 @@ import io.druid.query.monomorphicprocessing.HotLoopCallee;
public interface LongColumnSelector extends ColumnValueSelector, HotLoopCallee
{
@CalledFromHotLoop
public long get();
@Override
long getLong();
/**
* @deprecated This method is marked as deprecated in LongColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of LongColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@CalledFromHotLoop
@Override
default float getFloat()
{
return (float) getLong();
}
/**
* @deprecated This method is marked as deprecated in LongColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of LongColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@CalledFromHotLoop
@Override
default double getDouble()
{
return (double) getLong();
}
}

View File

@ -106,7 +106,7 @@ public class LongDimensionIndexer implements DimensionIndexer<Long, Long, Long>
class IndexerLongColumnSelector implements LongColumnSelector
{
@Override
public long get()
public long getLong()
{
final Object[] dims = currEntry.getKey().getDims();
@ -137,7 +137,7 @@ public class LongDimensionIndexer implements DimensionIndexer<Long, Long, Long>
class IndexerFloatColumnSelector implements FloatColumnSelector
{
@Override
public float get()
public float getFloat()
{
final Object[] dims = currEntry.getKey().getDims();
@ -200,7 +200,7 @@ public class LongDimensionIndexer implements DimensionIndexer<Long, Long, Long>
class IndexerDoubleColumnSelector implements DoubleColumnSelector
{
@Override
public double get()
public double getDouble()
{
final Object[] dims = currEntry.getKey().getDims();

View File

@ -38,9 +38,9 @@ public class LongWrappingDimensionSelector extends BaseSingleValueDimensionSelec
protected String getValue()
{
if (extractionFn == null) {
return String.valueOf(selector.get());
return String.valueOf(selector.getLong());
} else {
return extractionFn.apply(selector.get());
return extractionFn.apply(selector.getLong());
}
}

View File

@ -19,12 +19,50 @@
package io.druid.segment;
import io.druid.query.monomorphicprocessing.CalledFromHotLoop;
public interface ObjectColumnSelector<T> extends ColumnValueSelector
{
public Class<T> classOfObject();
@CalledFromHotLoop
/**
* This method is not annotated with {@link io.druid.query.monomorphicprocessing.CalledFromHotLoop}, because
* ObjectColumnSelector doesn't extend {@link io.druid.query.monomorphicprocessing.HotLoopCallee} yet. If it will,
* this method should be annotated.
*/
public T get();
/**
* @deprecated This method is marked as deprecated in ObjectColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of ObjectColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@Override
default float getFloat()
{
return ((Number) get()).floatValue();
}
/**
* @deprecated This method is marked as deprecated in ObjectColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of ObjectColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@Override
default double getDouble()
{
return ((Number) get()).doubleValue();
}
/**
* @deprecated This method is marked as deprecated in ObjectColumnSelector to minimize the probability of accidential
* calling. "Polymorphism" of ObjectColumnSelector should be used only when operating on {@link ColumnValueSelector}
* objects.
*/
@Deprecated
@Override
default long getLong()
{
return ((Number) get()).longValue();
}
}

View File

@ -566,7 +566,7 @@ public class QueryableIndexStorageAdapter implements StorageAdapter
return new HistoricalFloatColumnSelector()
{
@Override
public float get()
public float getFloat()
{
return metricVals.getFloatSingleValueRow(getReadableOffset().getOffset());
}
@ -612,7 +612,7 @@ public class QueryableIndexStorageAdapter implements StorageAdapter
return new DoubleColumnSelector()
{
@Override
public double get()
public double getDouble()
{
return metricVals.getDoubleSingleValueRow(getReadableOffset().getOffset());
}
@ -652,7 +652,7 @@ public class QueryableIndexStorageAdapter implements StorageAdapter
return new LongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return metricVals.getLongSingleValueRow(getReadableOffset().getOffset());
}

View File

@ -112,7 +112,7 @@ public class SingleScanTimeDimSelector implements SingleValueDimensionSelector
private int getDimensionValueIndex()
{
// if this the first timestamp, apply and cache extraction function result
final long timestamp = selector.get();
final long timestamp = selector.getLong();
if (index < 0) {
currentTimestamp = timestamp;
currentValue = extractionFn.apply(timestamp);

View File

@ -36,7 +36,7 @@ public final class ZeroDoubleColumnSelector implements DoubleColumnSelector
}
@Override
public double get()
public double getDouble()
{
return 0.0d;
}

View File

@ -37,7 +37,7 @@ public final class ZeroFloatColumnSelector implements HistoricalFloatColumnSelec
}
@Override
public float get()
public float getFloat()
{
return 0.0f;
}
@ -45,7 +45,7 @@ public final class ZeroFloatColumnSelector implements HistoricalFloatColumnSelec
@Override
public float get(int offset)
{
return get();
return getFloat();
}
@Override

View File

@ -36,7 +36,7 @@ public final class ZeroLongColumnSelector implements LongColumnSelector
}
@Override
public long get()
public long getLong()
{
return 0;
}

View File

@ -57,7 +57,7 @@ public class ExpressionFilter implements Filter
@Override
public boolean matches()
{
return Evals.asBoolean(selector.get());
return Evals.asBoolean(selector.getLong());
}
@Override

View File

@ -455,7 +455,7 @@ public class Filters
@Override
public boolean matches()
{
return predicate.applyLong(longSelector.get());
return predicate.applyLong(longSelector.getLong());
}
@Override

View File

@ -467,7 +467,7 @@ public class IncrementalIndexStorageAdapter implements StorageAdapter
return new FloatColumnSelector()
{
@Override
public float get()
public float getFloat()
{
return index.getMetricFloatValue(currEntry.getValue(), metricIndex);
}
@ -491,7 +491,7 @@ public class IncrementalIndexStorageAdapter implements StorageAdapter
class TimeLongColumnSelector implements LongColumnSelector
{
@Override
public long get()
public long getLong()
{
return currEntry.getKey().getTimestamp();
}
@ -525,7 +525,7 @@ public class IncrementalIndexStorageAdapter implements StorageAdapter
return new LongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return index.getMetricLongValue(
currEntry.getValue(),
@ -652,7 +652,7 @@ public class IncrementalIndexStorageAdapter implements StorageAdapter
return new DoubleColumnSelector()
{
@Override
public double get()
public double getDouble()
{
return index.getMetricDoubleValue(currEntry.getValue(), metricIndex);
}

View File

@ -63,11 +63,11 @@ public class ExpressionObjectSelector implements ObjectColumnSelector<ExprEval>
final Supplier<Object> supplier;
if (nativeType == ValueType.FLOAT) {
supplier = columnSelectorFactory.makeFloatColumnSelector(columnName)::get;
supplier = columnSelectorFactory.makeFloatColumnSelector(columnName)::getFloat;
} else if (nativeType == ValueType.LONG) {
supplier = columnSelectorFactory.makeLongColumnSelector(columnName)::get;
supplier = columnSelectorFactory.makeLongColumnSelector(columnName)::getLong;
} else if (nativeType == ValueType.DOUBLE) {
supplier = columnSelectorFactory.makeDoubleColumnSelector(columnName)::get;
supplier = columnSelectorFactory.makeDoubleColumnSelector(columnName)::getDouble;
} else if (nativeType == ValueType.STRING) {
supplier = supplierFromDimensionSelector(
columnSelectorFactory.makeDimensionSelector(new DefaultDimensionSpec(columnName, columnName))

View File

@ -55,7 +55,7 @@ public class ExpressionSelectors
class ExpressionLongColumnSelector implements LongColumnSelector
{
@Override
public long get()
public long getLong()
{
final ExprEval exprEval = baseSelector.get();
return exprEval.isNull() ? nullValue : exprEval.asLong();
@ -80,7 +80,7 @@ public class ExpressionSelectors
class ExpressionFloatColumnSelector implements FloatColumnSelector
{
@Override
public float get()
public float getFloat()
{
final ExprEval exprEval = baseSelector.get();
return exprEval.isNull() ? nullValue : (float) exprEval.asDouble();
@ -105,7 +105,7 @@ public class ExpressionSelectors
class ExpressionDoubleColumnSelector implements DoubleColumnSelector
{
@Override
public double get()
public double getDouble()
{
final Double number = baseSelector.get().asDouble();
return number != null ? number.doubleValue() : nullValue;

View File

@ -40,6 +40,7 @@ import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.query.ordering.StringComparators;
import io.druid.query.search.search.ContainsSearchQuerySpec;
import io.druid.segment.ColumnSelectorFactory;
import io.druid.segment.ColumnValueSelector;
import io.druid.segment.DimensionSelector;
import io.druid.segment.DimensionSelectorUtils;
import io.druid.segment.DoubleColumnSelector;
@ -206,9 +207,9 @@ public class FilteredAggregatorTest
return new DoubleColumnSelector()
{
@Override
public double get()
public double getDouble()
{
return (double) selector.get();
return ((ColumnValueSelector) selector).getDouble();
}
@Override

View File

@ -99,7 +99,7 @@ public class JavaScriptAggregatorBenchmark extends SimpleBenchmark
}
@Override
public float get()
public float getFloat()
{
return floats[(int) (index % floats.length)];
}
@ -126,7 +126,7 @@ public class JavaScriptAggregatorBenchmark extends SimpleBenchmark
}
@Override
public double get()
public double getDouble()
{
return doubles[(int) (index % doubles.length)];
}

View File

@ -46,7 +46,7 @@ public class MetricManipulatorFnsTest
new TestLongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return longVal;
}
@ -85,7 +85,7 @@ public class MetricManipulatorFnsTest
new TestLongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return longVal;
}

View File

@ -38,7 +38,7 @@ public class MetricSelectorUtils
@Override
public Float get()
{
return selector.get();
return selector.getFloat();
}
};
}
@ -56,7 +56,7 @@ public class MetricSelectorUtils
@Override
public Double get()
{
return selector.get();
return selector.getDouble();
}
};
}

View File

@ -34,7 +34,7 @@ public class TestDoubleColumnSelectorImpl extends TestDoubleColumnSelector
}
@Override
public double get()
public double getDouble()
{
return doubles[index];
}

View File

@ -33,7 +33,7 @@ public class TestFloatColumnSelector extends io.druid.segment.TestFloatColumnSel
}
@Override
public float get()
public float getFloat()
{
return floats[index];
}

View File

@ -33,7 +33,7 @@ public class TestLongColumnSelector extends io.druid.segment.TestLongColumnSelec
}
@Override
public long get()
public long getLong()
{
return longs[index];
}

View File

@ -53,7 +53,7 @@ public class TestColumnSelectorFactory implements ColumnSelectorFactory
return new TestFloatColumnSelector()
{
@Override
public float get()
public float getFloat()
{
return row.get().getFloatMetric(columnName);
}
@ -66,7 +66,7 @@ public class TestColumnSelectorFactory implements ColumnSelectorFactory
return new TestLongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return row.get().getLongMetric(columnName);
}
@ -104,7 +104,7 @@ public class TestColumnSelectorFactory implements ColumnSelectorFactory
return new TestDoubleColumnSelector()
{
@Override
public double get()
public double getDouble()
{
return row.get().getFloatMetric(columnName);
}

View File

@ -113,16 +113,16 @@ public class ExpressionVirtualColumnTest
final LongColumnSelector selector = XPLUSY.makeLongColumnSelector("expr", COLUMN_SELECTOR_FACTORY);
COLUMN_SELECTOR_FACTORY.setRow(ROW0);
Assert.assertEquals(0L, selector.get());
Assert.assertEquals(0L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW1);
Assert.assertEquals(4L, selector.get());
Assert.assertEquals(4L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW2);
Assert.assertEquals(5L, selector.get());
Assert.assertEquals(5L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW3);
Assert.assertEquals(5L, selector.get());
Assert.assertEquals(5L, selector.getLong());
}
@Test
@ -131,16 +131,16 @@ public class ExpressionVirtualColumnTest
final LongColumnSelector selector = ZCONCATX.makeLongColumnSelector("expr", COLUMN_SELECTOR_FACTORY);
COLUMN_SELECTOR_FACTORY.setRow(ROW0);
Assert.assertEquals(0L, selector.get());
Assert.assertEquals(0L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW1);
Assert.assertEquals(4L, selector.get());
Assert.assertEquals(4L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW2);
Assert.assertEquals(0L, selector.get());
Assert.assertEquals(0L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW3);
Assert.assertEquals(0L, selector.get());
Assert.assertEquals(0L, selector.getLong());
}
@Test
@ -149,16 +149,16 @@ public class ExpressionVirtualColumnTest
final FloatColumnSelector selector = XPLUSY.makeFloatColumnSelector("expr", COLUMN_SELECTOR_FACTORY);
COLUMN_SELECTOR_FACTORY.setRow(ROW0);
Assert.assertEquals(0.0f, selector.get(), 0.0f);
Assert.assertEquals(0.0f, selector.getFloat(), 0.0f);
COLUMN_SELECTOR_FACTORY.setRow(ROW1);
Assert.assertEquals(4.0f, selector.get(), 0.0f);
Assert.assertEquals(4.0f, selector.getFloat(), 0.0f);
COLUMN_SELECTOR_FACTORY.setRow(ROW2);
Assert.assertEquals(5.1f, selector.get(), 0.0f);
Assert.assertEquals(5.1f, selector.getFloat(), 0.0f);
COLUMN_SELECTOR_FACTORY.setRow(ROW3);
Assert.assertEquals(5.0f, selector.get(), 0.0f);
Assert.assertEquals(5.0f, selector.getFloat(), 0.0f);
}
@Test
@ -268,7 +268,7 @@ public class ExpressionVirtualColumnTest
final LongColumnSelector selector = CONSTANT_LIKE.makeLongColumnSelector("expr", COLUMN_SELECTOR_FACTORY);
COLUMN_SELECTOR_FACTORY.setRow(ROW0);
Assert.assertEquals(1L, selector.get());
Assert.assertEquals(1L, selector.getLong());
}
@Test
@ -277,16 +277,16 @@ public class ExpressionVirtualColumnTest
final LongColumnSelector selector = ZLIKE.makeLongColumnSelector("expr", COLUMN_SELECTOR_FACTORY);
COLUMN_SELECTOR_FACTORY.setRow(ROW0);
Assert.assertEquals(0L, selector.get());
Assert.assertEquals(0L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW1);
Assert.assertEquals(0L, selector.get());
Assert.assertEquals(0L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW2);
Assert.assertEquals(1L, selector.get());
Assert.assertEquals(1L, selector.getLong());
COLUMN_SELECTOR_FACTORY.setRow(ROW3);
Assert.assertEquals(1L, selector.get());
Assert.assertEquals(1L, selector.getLong());
}
@Test

View File

@ -32,6 +32,7 @@ import io.druid.query.extraction.ExtractionFn;
import io.druid.query.filter.ValueMatcher;
import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.segment.ColumnSelectorFactory;
import io.druid.segment.ColumnValueSelector;
import io.druid.segment.DimensionSelector;
import io.druid.segment.DimensionSelectorUtils;
import io.druid.segment.DoubleColumnSelector;
@ -83,8 +84,8 @@ public class VirtualColumnsTest
Assert.assertEquals(1L, objectSelector.get());
Assert.assertEquals("1", dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
Assert.assertEquals("0.5", extractionDimensionSelector.lookupName(extractionDimensionSelector.getRow().get(0)));
Assert.assertEquals(1.0f, floatSelector.get(), 0.0f);
Assert.assertEquals(1L, longSelector.get());
Assert.assertEquals(1.0f, floatSelector.getFloat(), 0.0f);
Assert.assertEquals(1L, longSelector.getLong());
}
@Test
@ -101,8 +102,8 @@ public class VirtualColumnsTest
Assert.assertEquals(5L, objectSelector.get());
Assert.assertEquals("5", dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
Assert.assertEquals(5.0f, floatSelector.get(), 0.0f);
Assert.assertEquals(5L, longSelector.get());
Assert.assertEquals(5.0f, floatSelector.getFloat(), 0.0f);
Assert.assertEquals(5L, longSelector.getLong());
}
@Test
@ -119,8 +120,8 @@ public class VirtualColumnsTest
Assert.assertEquals(-1L, objectSelector.get());
Assert.assertEquals("-1", dimensionSelector.lookupName(dimensionSelector.getRow().get(0)));
Assert.assertEquals(-1.0f, floatSelector.get(), 0.0f);
Assert.assertEquals(-1L, longSelector.get());
Assert.assertEquals(-1.0f, floatSelector.getFloat(), 0.0f);
Assert.assertEquals(-1L, longSelector.getLong());
}
@Test
@ -298,7 +299,7 @@ public class VirtualColumnsTest
@Override
public Object get()
{
return selector.get();
return selector.getLong();
}
};
}
@ -325,7 +326,7 @@ public class VirtualColumnsTest
@Override
public String lookupName(int id)
{
final String stringValue = String.valueOf(selector.get());
final String stringValue = String.valueOf(selector.getLong());
return extractionFn == null ? stringValue : extractionFn.apply(stringValue);
}
@ -374,13 +375,13 @@ public class VirtualColumnsTest
@Override
public FloatColumnSelector makeFloatColumnSelector(String columnName, ColumnSelectorFactory factory)
{
final LongColumnSelector selector = makeLongColumnSelector(columnName, factory);
final ColumnValueSelector selector = makeLongColumnSelector(columnName, factory);
return new TestFloatColumnSelector()
{
@Override
public float get()
public float getFloat()
{
return selector.get();
return selector.getFloat();
}
};
}
@ -394,7 +395,7 @@ public class VirtualColumnsTest
return new TestLongColumnSelector()
{
@Override
public long get()
public long getLong()
{
return theLong;
}
@ -402,17 +403,15 @@ public class VirtualColumnsTest
}
@Override
public DoubleColumnSelector makeDoubleColumnSelector(
String columnName, ColumnSelectorFactory factory
)
public DoubleColumnSelector makeDoubleColumnSelector(String columnName, ColumnSelectorFactory factory)
{
final LongColumnSelector selector = makeLongColumnSelector(columnName, factory);
final ColumnValueSelector selector = makeLongColumnSelector(columnName, factory);
return new TestDoubleColumnSelector() {
@Override
public double get()
public double getDouble()
{
return selector.get();
return selector.getDouble();
}
};
}

View File

@ -124,7 +124,7 @@ public class IngestSegmentFirehose implements Firehose
public InputRow next()
{
final Map<String, Object> theEvent = Maps.newLinkedHashMap();
final long timestamp = timestampColumnSelector.get();
final long timestamp = timestampColumnSelector.getLong();
theEvent.put(EventHolder.timestampKey, new DateTime(timestamp));
for (Map.Entry<String, DimensionSelector> dimSelector : dimSelectors.entrySet()) {