mirror of https://github.com/apache/druid.git
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:
parent
d5606bc558
commit
7454fd86a0
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ public class ApproximateHistogramAggregator implements Aggregator
|
|||
@Override
|
||||
public void aggregate()
|
||||
{
|
||||
histogram.offer(selector.get());
|
||||
histogram.offer(selector.getFloat());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -146,7 +146,7 @@ public class VarianceAggregatorCollectorTest
|
|||
float v;
|
||||
|
||||
@Override
|
||||
public float get()
|
||||
public float getFloat()
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -57,7 +57,7 @@ public class DoubleSumAggregator implements Aggregator
|
|||
@Override
|
||||
public void aggregate()
|
||||
{
|
||||
sum += selector.get();
|
||||
sum += selector.getDouble();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -56,7 +56,7 @@ public class FloatSumAggregator implements Aggregator
|
|||
@Override
|
||||
public void aggregate()
|
||||
{
|
||||
sum += selector.get();
|
||||
sum += selector.getFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -53,7 +53,7 @@ public class HistogramAggregator implements Aggregator
|
|||
@Override
|
||||
public void aggregate()
|
||||
{
|
||||
histogram.offer(selector.get());
|
||||
histogram.offer(selector.getFloat());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ public class LongSumAggregator implements Aggregator
|
|||
@Override
|
||||
public void aggregate()
|
||||
{
|
||||
sum += selector.get();
|
||||
sum += selector.getLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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())};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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())};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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())};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -36,7 +36,7 @@ public final class ZeroDoubleColumnSelector implements DoubleColumnSelector
|
|||
}
|
||||
|
||||
@Override
|
||||
public double get()
|
||||
public double getDouble()
|
||||
{
|
||||
return 0.0d;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -36,7 +36,7 @@ public final class ZeroLongColumnSelector implements LongColumnSelector
|
|||
}
|
||||
|
||||
@Override
|
||||
public long get()
|
||||
public long getLong()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public class ExpressionFilter implements Filter
|
|||
@Override
|
||||
public boolean matches()
|
||||
{
|
||||
return Evals.asBoolean(selector.get());
|
||||
return Evals.asBoolean(selector.getLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -455,7 +455,7 @@ public class Filters
|
|||
@Override
|
||||
public boolean matches()
|
||||
{
|
||||
return predicate.applyLong(longSelector.get());
|
||||
return predicate.applyLong(longSelector.getLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)];
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ public class TestDoubleColumnSelectorImpl extends TestDoubleColumnSelector
|
|||
}
|
||||
|
||||
@Override
|
||||
public double get()
|
||||
public double getDouble()
|
||||
{
|
||||
return doubles[index];
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ public class TestFloatColumnSelector extends io.druid.segment.TestFloatColumnSel
|
|||
}
|
||||
|
||||
@Override
|
||||
public float get()
|
||||
public float getFloat()
|
||||
{
|
||||
return floats[index];
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ public class TestLongColumnSelector extends io.druid.segment.TestLongColumnSelec
|
|||
}
|
||||
|
||||
@Override
|
||||
public long get()
|
||||
public long getLong()
|
||||
{
|
||||
return longs[index];
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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()) {
|
||||
|
|
Loading…
Reference in New Issue