Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,21 @@
import io.druid.segment.data.Offset;
import io.druid.segment.historical.HistoricalCursor;
import io.druid.segment.historical.HistoricalDimensionSelector;
import io.druid.segment.historical.HistoricalFloatColumnSelector;
import io.druid.segment.historical.HistoricalColumnSelector;

import java.nio.ByteBuffer;

public class Historical1SimpleDoubleAggPooledTopNScannerPrototype
implements Historical1AggPooledTopNScanner<
HistoricalDimensionSelector,
HistoricalFloatColumnSelector,
HistoricalColumnSelector,
SimpleDoubleBufferAggregator
>
{
@Override
public long scanAndAggregate(
HistoricalDimensionSelector dimensionSelector,
HistoricalFloatColumnSelector metricSelector,
HistoricalColumnSelector metricSelector,
SimpleDoubleBufferAggregator aggregator,
int aggregatorSize,
HistoricalCursor cursor,
Expand All @@ -52,7 +52,7 @@ public long scanAndAggregate(
int positionToAllocate = 0;
while (offset.withinBounds() && !Thread.currentThread().isInterrupted()) {
int rowNum = offset.getOffset();
double metric = metricSelector.get(rowNum);
double metric = metricSelector.getDouble(rowNum);
final IndexedInts dimValues = dimensionSelector.getRow(rowNum);
final int dimSize = dimValues.size();
for (int i = 0; i < dimSize; i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,22 @@
import io.druid.query.aggregation.SimpleDoubleBufferAggregator;
import io.druid.segment.data.Offset;
import io.druid.segment.historical.HistoricalCursor;
import io.druid.segment.historical.HistoricalFloatColumnSelector;
import io.druid.segment.historical.HistoricalColumnSelector;
import io.druid.segment.historical.SingleValueHistoricalDimensionSelector;

import java.nio.ByteBuffer;

public class HistoricalSingleValueDimSelector1SimpleDoubleAggPooledTopNScannerPrototype
implements Historical1AggPooledTopNScanner<
SingleValueHistoricalDimensionSelector,
HistoricalFloatColumnSelector,
HistoricalColumnSelector,
SimpleDoubleBufferAggregator
>
{
@Override
public long scanAndAggregate(
SingleValueHistoricalDimensionSelector dimensionSelector,
HistoricalFloatColumnSelector metricSelector,
HistoricalColumnSelector metricSelector,
SimpleDoubleBufferAggregator aggregator,
int aggregatorSize,
HistoricalCursor cursor,
Expand All @@ -54,10 +54,10 @@ public long scanAndAggregate(
int dimIndex = dimensionSelector.getRowValue(rowNum);
int position = positions[dimIndex];
if (position >= 0) {
aggregator.aggregate(resultsBuffer, position, metricSelector.get(rowNum));
aggregator.aggregate(resultsBuffer, position, metricSelector.getDouble(rowNum));
} else if (position == TopNAlgorithm.INIT_POSITION_VALUE) {
positions[dimIndex] = positionToAllocate;
aggregator.putFirst(resultsBuffer, positionToAllocate, metricSelector.get(rowNum));
aggregator.putFirst(resultsBuffer, positionToAllocate, metricSelector.getDouble(rowNum));
positionToAllocate += aggregatorSize;
}
processedRows++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import io.druid.segment.data.Offset;
import io.druid.segment.historical.HistoricalCursor;
import io.druid.segment.historical.HistoricalDimensionSelector;
import io.druid.segment.historical.HistoricalFloatColumnSelector;
import io.druid.segment.historical.HistoricalColumnSelector;
import io.druid.segment.historical.SingleValueHistoricalDimensionSelector;

import java.nio.ByteBuffer;
Expand Down Expand Up @@ -131,7 +131,7 @@ private static void computeSpecializedScanAndAggregateImplementations()
final Cursor cursor = params.getCursor();
if (cursor instanceof HistoricalCursor && aggregator instanceof SimpleDoubleBufferAggregator) {
if (params.getDimSelector() instanceof SingleValueHistoricalDimensionSelector &&
((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalFloatColumnSelector) {
((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalColumnSelector) {
return scanAndAggregateHistorical1SimpleDoubleAgg(
params,
positions,
Expand All @@ -152,7 +152,7 @@ private static void computeSpecializedScanAndAggregateImplementations()
final Cursor cursor = params.getCursor();
if (cursor instanceof HistoricalCursor && aggregator instanceof SimpleDoubleBufferAggregator) {
if (params.getDimSelector() instanceof HistoricalDimensionSelector &&
((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalFloatColumnSelector) {
((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalColumnSelector) {
return scanAndAggregateHistorical1SimpleDoubleAgg(
params,
positions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
package io.druid.segment;

import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.segment.historical.HistoricalFloatColumnSelector;
import io.druid.segment.historical.HistoricalColumnSelector;

public final class ZeroFloatColumnSelector implements HistoricalFloatColumnSelector
public final class ZeroFloatColumnSelector implements FloatColumnSelector, HistoricalColumnSelector
{
private static final ZeroFloatColumnSelector INSTANCE = new ZeroFloatColumnSelector();

Expand All @@ -43,9 +43,9 @@ public float getFloat()
}

@Override
public float get(int offset)
public double getDouble(int offset)
{
return getFloat();
return 0.0;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
import io.druid.query.monomorphicprocessing.CalledFromHotLoop;
import io.druid.query.monomorphicprocessing.HotLoopCallee;
import io.druid.segment.DoubleColumnSelector;
import io.druid.segment.FloatColumnSelector;
import io.druid.segment.LongColumnSelector;
import io.druid.segment.data.ReadableOffset;
import io.druid.segment.historical.HistoricalFloatColumnSelector;

import java.io.Closeable;

Expand All @@ -41,7 +41,7 @@ public interface GenericColumn extends HotLoopCallee, Closeable

@CalledFromHotLoop
float getFloatSingleValueRow(int rowNum);
HistoricalFloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset);
FloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset);

@CalledFromHotLoop
long getLongSingleValueRow(int rowNum);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@

import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.segment.DoubleColumnSelector;
import io.druid.segment.FloatColumnSelector;
import io.druid.segment.LongColumnSelector;
import io.druid.segment.data.IndexedDoubles;
import io.druid.segment.data.ReadableOffset;
import io.druid.segment.historical.HistoricalFloatColumnSelector;


public class IndexedDoublesGenericColumn implements GenericColumn
Expand Down Expand Up @@ -67,7 +67,7 @@ public float getFloatSingleValueRow(int rowNum)
}

@Override
public HistoricalFloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset)
public FloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset)
{
return column.makeFloatColumnSelector(offset);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@

import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.segment.DoubleColumnSelector;
import io.druid.segment.FloatColumnSelector;
import io.druid.segment.LongColumnSelector;
import io.druid.segment.data.IndexedFloats;
import io.druid.segment.data.ReadableOffset;
import io.druid.segment.historical.HistoricalFloatColumnSelector;

/**
*/
Expand Down Expand Up @@ -68,7 +68,7 @@ public float getFloatSingleValueRow(int rowNum)
}

@Override
public HistoricalFloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset)
public FloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset)
{
return column.makeFloatColumnSelector(offset);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@

import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.segment.DoubleColumnSelector;
import io.druid.segment.FloatColumnSelector;
import io.druid.segment.LongColumnSelector;
import io.druid.segment.data.IndexedLongs;
import io.druid.segment.data.ReadableOffset;
import io.druid.segment.historical.HistoricalFloatColumnSelector;

/**
*/
Expand Down Expand Up @@ -68,7 +68,7 @@ public float getFloatSingleValueRow(int rowNum)
}

@Override
public HistoricalFloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset)
public FloatColumnSelector makeFloatSingleValueRowSelector(ReadableOffset offset)
{
return column.makeFloatColumnSelector(offset);
}
Expand Down
40 changes: 28 additions & 12 deletions processing/src/main/java/io/druid/segment/data/IndexedDoubles.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@

import io.druid.query.monomorphicprocessing.RuntimeShapeInspector;
import io.druid.segment.DoubleColumnSelector;
import io.druid.segment.FloatColumnSelector;
import io.druid.segment.LongColumnSelector;
import io.druid.segment.historical.HistoricalFloatColumnSelector;
import io.druid.segment.historical.HistoricalColumnSelector;

import java.io.Closeable;

Expand All @@ -37,37 +38,44 @@ public interface IndexedDoubles extends Closeable

default DoubleColumnSelector makeDoubleColumnSelector(ReadableOffset offset)
{
return new DoubleColumnSelector()
class HistoricalDoubleColumnSelector implements DoubleColumnSelector, HistoricalColumnSelector
{
@Override
public double getDouble()
{
return IndexedDoubles.this.get(offset.getOffset());
}

@Override
public double getDouble(int offset)
{
return IndexedDoubles.this.get(offset);
}

@Override
public void inspectRuntimeShape(RuntimeShapeInspector inspector)
{
inspector.visit("indexed", IndexedDoubles.this);
inspector.visit("offset", offset);
}
};
}
return new HistoricalDoubleColumnSelector();
}

default HistoricalFloatColumnSelector makeFloatColumnSelector(ReadableOffset offset)
default FloatColumnSelector makeFloatColumnSelector(ReadableOffset offset)
{
return new HistoricalFloatColumnSelector()
class HistoricalFloatColumnSelector implements FloatColumnSelector, HistoricalColumnSelector
{
@Override
public float get(int offset)
public float getFloat()
{
return (float) IndexedDoubles.this.get(offset);
return (float) IndexedDoubles.this.get(offset.getOffset());
}

@Override
public float getFloat()
public double getDouble(int offset)
{
return (float) IndexedDoubles.this.get(offset.getOffset());
return IndexedDoubles.this.get(offset);
}

@Override
Expand All @@ -76,26 +84,34 @@ public void inspectRuntimeShape(RuntimeShapeInspector inspector)
inspector.visit("indexed", IndexedDoubles.this);
inspector.visit("offset", offset);
}
};
}
return new HistoricalFloatColumnSelector();
}

default LongColumnSelector makeLongColumnSelector(ReadableOffset offset)
{
return new LongColumnSelector()
class HistoricalLongColumnSelector implements LongColumnSelector, HistoricalColumnSelector
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar with java semantics for this part. Will this create a new class in a way different than an anonymous class since the class def is inline?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html seems to indicate they should behave the same way

{
@Override
public long getLong()
{
return (long) IndexedDoubles.this.get(offset.getOffset());
}

@Override
public double getDouble(int offset)
{
return IndexedDoubles.this.get(offset);
}

@Override
public void inspectRuntimeShape(RuntimeShapeInspector inspector)
{
inspector.visit("indexed", IndexedDoubles.this);
inspector.visit("offset", offset);
}
};
}
return new HistoricalLongColumnSelector();
}
}

Loading