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

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BlockFactory;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.IntArrayBlock;
import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.operator.DriverContext;
import org.elasticsearch.core.Releasables;
Expand Down Expand Up @@ -121,6 +124,43 @@ public static Block evaluateFinal(GroupingSumState state, IntVector selected, Gr
}
}

public static GroupingAggregatorFunction.AddInput wrapAddInput(
GroupingAggregatorFunction.AddInput delegate,
GroupingSumState state,
DoubleVector values
) {
return new GroupingAggregatorFunction.AddInput() {
@Override
public void add(int positionOffset, IntArrayBlock groupIds) {
delegate.add(positionOffset, groupIds);
}

@Override
public void add(int positionOffset, IntBigArrayBlock groupIds) {
delegate.add(positionOffset, groupIds);
}

@Override
public void add(int positionOffset, IntVector groupIds) {
if (groupIds.isConstant()) {
double sum = 0.0;
int positionCount = groupIds.getPositionCount();
for (int i = 0; i < positionCount; i++) {
sum += values.getDouble(i);
}
state.add(sum, groupIds.getInt(0));
} else {
delegate.add(positionOffset, groupIds);
}
}

@Override
public void close() {
Releasables.close(delegate);
}
};
}

static final class SumState implements AggregatorState {
private boolean seen;
double value;
Expand Down Expand Up @@ -149,7 +189,7 @@ static final class GroupingSumState extends AbstractArrayState implements Groupi
super(bigArrays);
boolean success = false;
try {
this.values = bigArrays.newDoubleArray(1);
this.values = bigArrays.newDoubleArray(128);
success = true;
} finally {
if (success == false) {
Expand Down