diff --git a/docs/changelog/127582.yaml b/docs/changelog/127582.yaml
new file mode 100644
index 000000000000..589c20e8f2fb
--- /dev/null
+++ b/docs/changelog/127582.yaml
@@ -0,0 +1,5 @@
+pr: 127582
+summary: Specialize ags `AddInput` for each block type
+area: ES|QL
+type: enhancement
+issues: []
diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/GroupingAggregatorImplementer.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/GroupingAggregatorImplementer.java
index f42138c3eceb..b02abd9b1fa5 100644
--- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/GroupingAggregatorImplementer.java
+++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/GroupingAggregatorImplementer.java
@@ -54,7 +54,8 @@ import static org.elasticsearch.compute.gen.Types.GROUPING_AGGREGATOR_EVALUATOR_
import static org.elasticsearch.compute.gen.Types.GROUPING_AGGREGATOR_FUNCTION;
import static org.elasticsearch.compute.gen.Types.GROUPING_AGGREGATOR_FUNCTION_ADD_INPUT;
import static org.elasticsearch.compute.gen.Types.INTERMEDIATE_STATE_DESC;
-import static org.elasticsearch.compute.gen.Types.INT_BLOCK;
+import static org.elasticsearch.compute.gen.Types.INT_ARRAY_BLOCK;
+import static org.elasticsearch.compute.gen.Types.INT_BIG_ARRAY_BLOCK;
import static org.elasticsearch.compute.gen.Types.INT_VECTOR;
import static org.elasticsearch.compute.gen.Types.LIST_AGG_FUNC_DESC;
import static org.elasticsearch.compute.gen.Types.LIST_INTEGER;
@@ -76,6 +77,8 @@ import static org.elasticsearch.compute.gen.Types.vectorType;
* and break-point-able as possible.
*/
public class GroupingAggregatorImplementer {
+ private static final List GROUP_IDS_CLASSES = List.of(INT_ARRAY_BLOCK, INT_BIG_ARRAY_BLOCK, INT_VECTOR);
+
private final TypeElement declarationType;
private final List warnExceptions;
private final ExecutableElement init;
@@ -196,10 +199,10 @@ public class GroupingAggregatorImplementer {
builder.addMethod(intermediateStateDesc());
builder.addMethod(intermediateBlockCount());
builder.addMethod(prepareProcessPage());
- builder.addMethod(addRawInputLoop(INT_VECTOR, blockType(aggParam.type())));
- builder.addMethod(addRawInputLoop(INT_VECTOR, vectorType(aggParam.type())));
- builder.addMethod(addRawInputLoop(INT_BLOCK, blockType(aggParam.type())));
- builder.addMethod(addRawInputLoop(INT_BLOCK, vectorType(aggParam.type())));
+ for (ClassName groupIdClass : GROUP_IDS_CLASSES) {
+ builder.addMethod(addRawInputLoop(groupIdClass, blockType(aggParam.type())));
+ builder.addMethod(addRawInputLoop(groupIdClass, vectorType(aggParam.type())));
+ }
builder.addMethod(selectedMayContainUnseenGroups());
builder.addMethod(addIntermediateInput());
builder.addMethod(addIntermediateRowInput());
@@ -347,15 +350,12 @@ public class GroupingAggregatorImplementer {
TypeSpec.Builder builder = TypeSpec.anonymousClassBuilder("");
builder.addSuperinterface(GROUPING_AGGREGATOR_FUNCTION_ADD_INPUT);
- MethodSpec.Builder block = MethodSpec.methodBuilder("add").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC);
- block.addParameter(TypeName.INT, "positionOffset").addParameter(INT_BLOCK, "groupIds");
- addBlock.accept(block);
- builder.addMethod(block.build());
-
- MethodSpec.Builder vector = MethodSpec.methodBuilder("add").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC);
- vector.addParameter(TypeName.INT, "positionOffset").addParameter(INT_VECTOR, "groupIds");
- addBlock.accept(vector);
- builder.addMethod(vector.build());
+ for (ClassName groupIdsType : GROUP_IDS_CLASSES) {
+ MethodSpec.Builder vector = MethodSpec.methodBuilder("add").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC);
+ vector.addParameter(TypeName.INT, "positionOffset").addParameter(groupIdsType, "groupIds");
+ addBlock.accept(vector);
+ builder.addMethod(vector.build());
+ }
MethodSpec.Builder close = MethodSpec.methodBuilder("close").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC);
builder.addMethod(close.build());
diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/Types.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/Types.java
index 62ecee6b5c6e..a9f4eef52171 100644
--- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/Types.java
+++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/Types.java
@@ -46,6 +46,8 @@ public class Types {
static final ClassName BOOLEAN_BLOCK = ClassName.get(DATA_PACKAGE, "BooleanBlock");
static final ClassName BYTES_REF_BLOCK = ClassName.get(DATA_PACKAGE, "BytesRefBlock");
static final ClassName INT_BLOCK = ClassName.get(DATA_PACKAGE, "IntBlock");
+ static final ClassName INT_ARRAY_BLOCK = ClassName.get(DATA_PACKAGE, "IntArrayBlock");
+ static final ClassName INT_BIG_ARRAY_BLOCK = ClassName.get(DATA_PACKAGE, "IntBigArrayBlock");
static final ClassName LONG_BLOCK = ClassName.get(DATA_PACKAGE, "LongBlock");
static final ClassName DOUBLE_BLOCK = ClassName.get(DATA_PACKAGE, "DoubleBlock");
static final ClassName FLOAT_BLOCK = ClassName.get(DATA_PACKAGE, "FloatBlock");
diff --git a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BooleanArrayBlock.java b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BooleanArrayBlock.java
index 0c547366abdf..72cb193fcc46 100644
--- a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BooleanArrayBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BooleanArrayBlock.java
@@ -23,7 +23,7 @@ import java.util.BitSet;
* Block implementation that stores values in a {@link BooleanArrayVector}.
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class BooleanArrayBlock extends AbstractArrayBlock implements BooleanBlock {
+public final class BooleanArrayBlock extends AbstractArrayBlock implements BooleanBlock {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(BooleanArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BytesRefArrayBlock.java b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BytesRefArrayBlock.java
index f698535752a1..0f4b24ee91f2 100644
--- a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BytesRefArrayBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/BytesRefArrayBlock.java
@@ -25,7 +25,7 @@ import java.util.BitSet;
* Does not take ownership of the given {@link BytesRefArray} and does not adjust circuit breakers to account for it.
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class BytesRefArrayBlock extends AbstractArrayBlock implements BytesRefBlock {
+public final class BytesRefArrayBlock extends AbstractArrayBlock implements BytesRefBlock {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(BytesRefArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/DoubleArrayBlock.java b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/DoubleArrayBlock.java
index 2315ac59392b..68ab08ad59c3 100644
--- a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/DoubleArrayBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/DoubleArrayBlock.java
@@ -23,7 +23,7 @@ import java.util.BitSet;
* Block implementation that stores values in a {@link DoubleArrayVector}.
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class DoubleArrayBlock extends AbstractArrayBlock implements DoubleBlock {
+public final class DoubleArrayBlock extends AbstractArrayBlock implements DoubleBlock {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(DoubleArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/FloatArrayBlock.java b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/FloatArrayBlock.java
index 801d94e65e62..5c794ef0e74e 100644
--- a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/FloatArrayBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/FloatArrayBlock.java
@@ -23,7 +23,7 @@ import java.util.BitSet;
* Block implementation that stores values in a {@link FloatArrayVector}.
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class FloatArrayBlock extends AbstractArrayBlock implements FloatBlock {
+public final class FloatArrayBlock extends AbstractArrayBlock implements FloatBlock {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(FloatArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/IntArrayBlock.java b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/IntArrayBlock.java
index bab387f62965..3296ef9dbe3c 100644
--- a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/IntArrayBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/IntArrayBlock.java
@@ -23,7 +23,7 @@ import java.util.BitSet;
* Block implementation that stores values in a {@link IntArrayVector}.
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class IntArrayBlock extends AbstractArrayBlock implements IntBlock {
+public final class IntArrayBlock extends AbstractArrayBlock implements IntBlock {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(IntArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/LongArrayBlock.java b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/LongArrayBlock.java
index a9b690264302..62f7914441ef 100644
--- a/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/LongArrayBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/generated-src/org/elasticsearch/compute/data/LongArrayBlock.java
@@ -23,7 +23,7 @@ import java.util.BitSet;
* Block implementation that stores values in a {@link LongArrayVector}.
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class LongArrayBlock extends AbstractArrayBlock implements LongBlock {
+public final class LongArrayBlock extends AbstractArrayBlock implements LongBlock {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance(LongArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBooleanGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBooleanGroupingAggregatorFunction.java
index d031450a77f5..4fce90e84add 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBooleanGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBooleanGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -65,7 +66,12 @@ public final class CountDistinctBooleanGroupingAggregatorFunction implements Gro
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +87,12 @@ public final class CountDistinctBooleanGroupingAggregatorFunction implements Gro
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,28 +107,7 @@ public final class CountDistinctBooleanGroupingAggregatorFunction implements Gro
};
}
- private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- CountDistinctBooleanAggregator.combine(state, groupId, values.getBoolean(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- CountDistinctBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BooleanBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -138,7 +128,7 @@ public final class CountDistinctBooleanGroupingAggregatorFunction implements Gro
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BooleanVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -152,6 +142,62 @@ public final class CountDistinctBooleanGroupingAggregatorFunction implements Gro
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctBooleanAggregator.combine(state, groupId, values.getBoolean(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctBooleanAggregator.combine(state, groupId, values.getBoolean(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ CountDistinctBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBytesRefGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBytesRefGroupingAggregatorFunction.java
index fec083927d5d..2d005a17dd18 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBytesRefGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBytesRefGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -68,7 +69,12 @@ public final class CountDistinctBytesRefGroupingAggregatorFunction implements Gr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class CountDistinctBytesRefGroupingAggregatorFunction implements Gr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,6 +110,80 @@ public final class CountDistinctBytesRefGroupingAggregatorFunction implements Gr
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -122,43 +207,6 @@ public final class CountDistinctBytesRefGroupingAggregatorFunction implements Gr
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- CountDistinctBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- CountDistinctBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctDoubleGroupingAggregatorFunction.java
index 756e92291384..0f0dfd4fa5b2 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctDoubleGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -70,7 +71,12 @@ public final class CountDistinctDoubleGroupingAggregatorFunction implements Grou
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class CountDistinctDoubleGroupingAggregatorFunction implements Grou
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class CountDistinctDoubleGroupingAggregatorFunction implements Grou
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- CountDistinctDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- CountDistinctDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class CountDistinctDoubleGroupingAggregatorFunction implements Grou
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class CountDistinctDoubleGroupingAggregatorFunction implements Grou
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ CountDistinctDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctFloatGroupingAggregatorFunction.java
index 1462deb1aab9..8e2fa1d71419 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctFloatGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -70,7 +71,12 @@ public final class CountDistinctFloatGroupingAggregatorFunction implements Group
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class CountDistinctFloatGroupingAggregatorFunction implements Group
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class CountDistinctFloatGroupingAggregatorFunction implements Group
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- CountDistinctFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- CountDistinctFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class CountDistinctFloatGroupingAggregatorFunction implements Group
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class CountDistinctFloatGroupingAggregatorFunction implements Group
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ CountDistinctFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctIntGroupingAggregatorFunction.java
index 2145489c6709..08768acfa526 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctIntGroupingAggregatorFunction.java
@@ -14,6 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -68,7 +70,12 @@ public final class CountDistinctIntGroupingAggregatorFunction implements Groupin
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +91,12 @@ public final class CountDistinctIntGroupingAggregatorFunction implements Groupin
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,28 +111,7 @@ public final class CountDistinctIntGroupingAggregatorFunction implements Groupin
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- CountDistinctIntAggregator.combine(state, groupId, values.getInt(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- CountDistinctIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -141,7 +132,7 @@ public final class CountDistinctIntGroupingAggregatorFunction implements Groupin
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -155,6 +146,62 @@ public final class CountDistinctIntGroupingAggregatorFunction implements Groupin
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ CountDistinctIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctLongGroupingAggregatorFunction.java
index 20ae39cdbcd1..0b1caa1c3727 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctLongGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -70,7 +71,12 @@ public final class CountDistinctLongGroupingAggregatorFunction implements Groupi
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class CountDistinctLongGroupingAggregatorFunction implements Groupi
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class CountDistinctLongGroupingAggregatorFunction implements Groupi
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- CountDistinctLongAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- CountDistinctLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class CountDistinctLongGroupingAggregatorFunction implements Groupi
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class CountDistinctLongGroupingAggregatorFunction implements Groupi
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ CountDistinctLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ CountDistinctLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ CountDistinctLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeDoubleGroupingAggregatorFunction.java
index 2ca6ab02875a..8a32e5552dd1 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeDoubleGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -72,7 +73,12 @@ public final class LastOverTimeDoubleGroupingAggregatorFunction implements Group
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -88,7 +94,12 @@ public final class LastOverTimeDoubleGroupingAggregatorFunction implements Group
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -103,6 +114,82 @@ public final class LastOverTimeDoubleGroupingAggregatorFunction implements Group
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeDoubleAggregator.combine(state, groupId, timestamps.getLong(v), values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeDoubleAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getDouble(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeDoubleAggregator.combine(state, groupId, timestamps.getLong(v), values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeDoubleAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getDouble(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -127,44 +214,6 @@ public final class LastOverTimeDoubleGroupingAggregatorFunction implements Group
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- LastOverTimeDoubleAggregator.combine(state, groupId, timestamps.getLong(v), values.getDouble(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- LastOverTimeDoubleAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getDouble(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeFloatGroupingAggregatorFunction.java
index 38a3b23ee8cc..250c5cd755a1 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeFloatGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -72,7 +73,12 @@ public final class LastOverTimeFloatGroupingAggregatorFunction implements Groupi
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -88,7 +94,12 @@ public final class LastOverTimeFloatGroupingAggregatorFunction implements Groupi
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -103,6 +114,82 @@ public final class LastOverTimeFloatGroupingAggregatorFunction implements Groupi
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeFloatAggregator.combine(state, groupId, timestamps.getLong(v), values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeFloatAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getFloat(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeFloatAggregator.combine(state, groupId, timestamps.getLong(v), values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeFloatAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getFloat(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, FloatBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -127,44 +214,6 @@ public final class LastOverTimeFloatGroupingAggregatorFunction implements Groupi
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- LastOverTimeFloatAggregator.combine(state, groupId, timestamps.getLong(v), values.getFloat(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- LastOverTimeFloatAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getFloat(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeIntGroupingAggregatorFunction.java
index f03728a905ac..9b118c7dea9b 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeIntGroupingAggregatorFunction.java
@@ -11,6 +11,8 @@ import java.lang.StringBuilder;
import java.util.List;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -70,7 +72,12 @@ public final class LastOverTimeIntGroupingAggregatorFunction implements Grouping
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -86,7 +93,12 @@ public final class LastOverTimeIntGroupingAggregatorFunction implements Grouping
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -101,6 +113,82 @@ public final class LastOverTimeIntGroupingAggregatorFunction implements Grouping
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeIntAggregator.combine(state, groupId, timestamps.getLong(v), values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeIntAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getInt(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeIntAggregator.combine(state, groupId, timestamps.getLong(v), values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeIntAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getInt(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, IntBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -125,44 +213,6 @@ public final class LastOverTimeIntGroupingAggregatorFunction implements Grouping
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- LastOverTimeIntAggregator.combine(state, groupId, timestamps.getLong(v), values.getInt(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- LastOverTimeIntAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getInt(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeLongGroupingAggregatorFunction.java
index c9ee5fbad370..82bfc732969e 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/LastOverTimeLongGroupingAggregatorFunction.java
@@ -11,7 +11,8 @@ import java.lang.StringBuilder;
import java.util.List;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -70,7 +71,12 @@ public final class LastOverTimeLongGroupingAggregatorFunction implements Groupin
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -86,7 +92,12 @@ public final class LastOverTimeLongGroupingAggregatorFunction implements Groupin
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -101,6 +112,82 @@ public final class LastOverTimeLongGroupingAggregatorFunction implements Groupin
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeLongAggregator.combine(state, groupId, timestamps.getLong(v), values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeLongAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getLong(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ LastOverTimeLongAggregator.combine(state, groupId, timestamps.getLong(v), values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ LastOverTimeLongAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getLong(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, LongBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -125,44 +212,6 @@ public final class LastOverTimeLongGroupingAggregatorFunction implements Groupin
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- LastOverTimeLongAggregator.combine(state, groupId, timestamps.getLong(v), values.getLong(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- LastOverTimeLongAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getLong(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBooleanGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBooleanGroupingAggregatorFunction.java
index 5e2684b85c8d..f7390f55bc52 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBooleanGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBooleanGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -65,7 +66,12 @@ public final class MaxBooleanGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +87,12 @@ public final class MaxBooleanGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,28 +107,7 @@ public final class MaxBooleanGroupingAggregatorFunction implements GroupingAggre
};
}
- private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MaxBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MaxBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BooleanBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -138,7 +128,7 @@ public final class MaxBooleanGroupingAggregatorFunction implements GroupingAggre
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BooleanVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -152,6 +142,62 @@ public final class MaxBooleanGroupingAggregatorFunction implements GroupingAggre
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MaxBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MaxBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBytesRefGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBytesRefGroupingAggregatorFunction.java
index 52bc763449f5..41f98d962bd2 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBytesRefGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxBytesRefGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -68,7 +69,12 @@ public final class MaxBytesRefGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class MaxBytesRefGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,6 +110,80 @@ public final class MaxBytesRefGroupingAggregatorFunction implements GroupingAggr
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MaxBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MaxBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MaxBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MaxBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -122,43 +207,6 @@ public final class MaxBytesRefGroupingAggregatorFunction implements GroupingAggr
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MaxBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- MaxBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxDoubleGroupingAggregatorFunction.java
index 0b2e5cca5d24..53273dad7c0f 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxDoubleGroupingAggregatorFunction.java
@@ -15,7 +15,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -67,7 +68,12 @@ public final class MaxDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MaxDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MaxDoubleGroupingAggregatorFunction implements GroupingAggreg
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MaxDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MaxDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MaxDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MaxDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MaxDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MaxDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxFloatGroupingAggregatorFunction.java
index 4ec8212a2da6..49afaf3c7265 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxFloatGroupingAggregatorFunction.java
@@ -15,7 +15,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -67,7 +68,12 @@ public final class MaxFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MaxFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MaxFloatGroupingAggregatorFunction implements GroupingAggrega
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MaxFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MaxFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MaxFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MaxFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MaxFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MaxFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIntGroupingAggregatorFunction.java
index 024d0db097b2..3d97bf9df5dd 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIntGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -65,7 +67,12 @@ public final class MaxIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +88,12 @@ public final class MaxIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,28 +108,7 @@ public final class MaxIntGroupingAggregatorFunction implements GroupingAggregato
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MaxIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MaxIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -138,7 +129,7 @@ public final class MaxIntGroupingAggregatorFunction implements GroupingAggregato
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -152,6 +143,62 @@ public final class MaxIntGroupingAggregatorFunction implements GroupingAggregato
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MaxIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MaxIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIpGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIpGroupingAggregatorFunction.java
index 805fc77aa930..fd38873655ed 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIpGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxIpGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -68,7 +69,12 @@ public final class MaxIpGroupingAggregatorFunction implements GroupingAggregator
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class MaxIpGroupingAggregatorFunction implements GroupingAggregator
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,6 +110,80 @@ public final class MaxIpGroupingAggregatorFunction implements GroupingAggregator
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MaxIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MaxIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MaxIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MaxIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -122,43 +207,6 @@ public final class MaxIpGroupingAggregatorFunction implements GroupingAggregator
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MaxIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- MaxIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxLongGroupingAggregatorFunction.java
index 5d6fa43723e7..fcaea869f84d 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MaxLongGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -67,7 +68,12 @@ public final class MaxLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MaxLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MaxLongGroupingAggregatorFunction implements GroupingAggregat
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MaxLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MaxLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MaxLongGroupingAggregatorFunction implements GroupingAggregat
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MaxLongGroupingAggregatorFunction implements GroupingAggregat
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MaxLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MaxLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MaxLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationDoubleGroupingAggregatorFunction.java
index 9091515805df..c380146094f4 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationDoubleGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -67,7 +68,12 @@ public final class MedianAbsoluteDeviationDoubleGroupingAggregatorFunction imple
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MedianAbsoluteDeviationDoubleGroupingAggregatorFunction imple
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MedianAbsoluteDeviationDoubleGroupingAggregatorFunction imple
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MedianAbsoluteDeviationDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- MedianAbsoluteDeviationDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MedianAbsoluteDeviationDoubleGroupingAggregatorFunction imple
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MedianAbsoluteDeviationDoubleGroupingAggregatorFunction imple
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MedianAbsoluteDeviationDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ MedianAbsoluteDeviationDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationFloatGroupingAggregatorFunction.java
index 1649e40d9045..a895ebc9eda6 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationFloatGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -67,7 +68,12 @@ public final class MedianAbsoluteDeviationFloatGroupingAggregatorFunction implem
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MedianAbsoluteDeviationFloatGroupingAggregatorFunction implem
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MedianAbsoluteDeviationFloatGroupingAggregatorFunction implem
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MedianAbsoluteDeviationFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- MedianAbsoluteDeviationFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MedianAbsoluteDeviationFloatGroupingAggregatorFunction implem
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MedianAbsoluteDeviationFloatGroupingAggregatorFunction implem
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MedianAbsoluteDeviationFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ MedianAbsoluteDeviationFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationIntGroupingAggregatorFunction.java
index 5904bef3956d..f9b9934520f0 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationIntGroupingAggregatorFunction.java
@@ -14,6 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -65,7 +67,12 @@ public final class MedianAbsoluteDeviationIntGroupingAggregatorFunction implemen
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +88,12 @@ public final class MedianAbsoluteDeviationIntGroupingAggregatorFunction implemen
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,28 +108,7 @@ public final class MedianAbsoluteDeviationIntGroupingAggregatorFunction implemen
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MedianAbsoluteDeviationIntAggregator.combine(state, groupId, values.getInt(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- MedianAbsoluteDeviationIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -138,7 +129,7 @@ public final class MedianAbsoluteDeviationIntGroupingAggregatorFunction implemen
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -152,6 +143,62 @@ public final class MedianAbsoluteDeviationIntGroupingAggregatorFunction implemen
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MedianAbsoluteDeviationIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ MedianAbsoluteDeviationIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationLongGroupingAggregatorFunction.java
index bb50db9998a5..e1693d7475c6 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MedianAbsoluteDeviationLongGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -67,7 +68,12 @@ public final class MedianAbsoluteDeviationLongGroupingAggregatorFunction impleme
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MedianAbsoluteDeviationLongGroupingAggregatorFunction impleme
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MedianAbsoluteDeviationLongGroupingAggregatorFunction impleme
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MedianAbsoluteDeviationLongAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- MedianAbsoluteDeviationLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MedianAbsoluteDeviationLongGroupingAggregatorFunction impleme
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MedianAbsoluteDeviationLongGroupingAggregatorFunction impleme
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MedianAbsoluteDeviationLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MedianAbsoluteDeviationLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ MedianAbsoluteDeviationLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBooleanGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBooleanGroupingAggregatorFunction.java
index 10bb3ca5c60b..4ca346913a25 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBooleanGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBooleanGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -65,7 +66,12 @@ public final class MinBooleanGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +87,12 @@ public final class MinBooleanGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,28 +107,7 @@ public final class MinBooleanGroupingAggregatorFunction implements GroupingAggre
};
}
- private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MinBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MinBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BooleanBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -138,7 +128,7 @@ public final class MinBooleanGroupingAggregatorFunction implements GroupingAggre
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BooleanVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -152,6 +142,62 @@ public final class MinBooleanGroupingAggregatorFunction implements GroupingAggre
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MinBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MinBooleanAggregator.combine(state.getOrDefault(groupId), values.getBoolean(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBytesRefGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBytesRefGroupingAggregatorFunction.java
index 29d96b63a8e5..dc721573876a 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBytesRefGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinBytesRefGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -68,7 +69,12 @@ public final class MinBytesRefGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class MinBytesRefGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,6 +110,80 @@ public final class MinBytesRefGroupingAggregatorFunction implements GroupingAggr
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MinBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MinBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MinBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MinBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -122,43 +207,6 @@ public final class MinBytesRefGroupingAggregatorFunction implements GroupingAggr
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MinBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- MinBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinDoubleGroupingAggregatorFunction.java
index c1396235fef0..3212ca644aee 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinDoubleGroupingAggregatorFunction.java
@@ -15,7 +15,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -67,7 +68,12 @@ public final class MinDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MinDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MinDoubleGroupingAggregatorFunction implements GroupingAggreg
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MinDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MinDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MinDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MinDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MinDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MinDoubleAggregator.combine(state.getOrDefault(groupId), values.getDouble(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinFloatGroupingAggregatorFunction.java
index daadf3d7dbb5..2e7b089e7592 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinFloatGroupingAggregatorFunction.java
@@ -15,7 +15,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -67,7 +68,12 @@ public final class MinFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MinFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MinFloatGroupingAggregatorFunction implements GroupingAggrega
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MinFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MinFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MinFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MinFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MinFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MinFloatAggregator.combine(state.getOrDefault(groupId), values.getFloat(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIntGroupingAggregatorFunction.java
index 8f92c6309676..50c5e80a55b0 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIntGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -65,7 +67,12 @@ public final class MinIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +88,12 @@ public final class MinIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,28 +108,7 @@ public final class MinIntGroupingAggregatorFunction implements GroupingAggregato
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MinIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MinIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -138,7 +129,7 @@ public final class MinIntGroupingAggregatorFunction implements GroupingAggregato
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -152,6 +143,62 @@ public final class MinIntGroupingAggregatorFunction implements GroupingAggregato
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MinIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MinIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIpGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIpGroupingAggregatorFunction.java
index 05a5c3b57e2a..c89c1feb6790 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIpGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinIpGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -68,7 +69,12 @@ public final class MinIpGroupingAggregatorFunction implements GroupingAggregator
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class MinIpGroupingAggregatorFunction implements GroupingAggregator
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,6 +110,80 @@ public final class MinIpGroupingAggregatorFunction implements GroupingAggregator
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MinIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MinIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ MinIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ MinIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -122,43 +207,6 @@ public final class MinIpGroupingAggregatorFunction implements GroupingAggregator
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- MinIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- MinIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinLongGroupingAggregatorFunction.java
index c6421afa4621..dc92d712ddb6 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/MinLongGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -67,7 +68,12 @@ public final class MinLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class MinLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class MinLongGroupingAggregatorFunction implements GroupingAggregat
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, MinLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, MinLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class MinLongGroupingAggregatorFunction implements GroupingAggregat
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class MinLongGroupingAggregatorFunction implements GroupingAggregat
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, MinLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, MinLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, MinLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileDoubleGroupingAggregatorFunction.java
index a2ba67333a05..1264bff20abf 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileDoubleGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -70,7 +71,12 @@ public final class PercentileDoubleGroupingAggregatorFunction implements Groupin
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class PercentileDoubleGroupingAggregatorFunction implements Groupin
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class PercentileDoubleGroupingAggregatorFunction implements Groupin
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- PercentileDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- PercentileDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class PercentileDoubleGroupingAggregatorFunction implements Groupin
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class PercentileDoubleGroupingAggregatorFunction implements Groupin
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ PercentileDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ PercentileDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileFloatGroupingAggregatorFunction.java
index 4c24b1b4221c..f844efae8d21 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileFloatGroupingAggregatorFunction.java
@@ -16,7 +16,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -70,7 +71,12 @@ public final class PercentileFloatGroupingAggregatorFunction implements Grouping
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class PercentileFloatGroupingAggregatorFunction implements Grouping
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class PercentileFloatGroupingAggregatorFunction implements Grouping
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- PercentileFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- PercentileFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class PercentileFloatGroupingAggregatorFunction implements Grouping
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class PercentileFloatGroupingAggregatorFunction implements Grouping
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ PercentileFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ PercentileFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileIntGroupingAggregatorFunction.java
index 97ce87021f4f..e0dd21ecc80d 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileIntGroupingAggregatorFunction.java
@@ -14,6 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -68,7 +70,12 @@ public final class PercentileIntGroupingAggregatorFunction implements GroupingAg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +91,12 @@ public final class PercentileIntGroupingAggregatorFunction implements GroupingAg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,28 +111,7 @@ public final class PercentileIntGroupingAggregatorFunction implements GroupingAg
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- PercentileIntAggregator.combine(state, groupId, values.getInt(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- PercentileIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -141,7 +132,7 @@ public final class PercentileIntGroupingAggregatorFunction implements GroupingAg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -155,6 +146,62 @@ public final class PercentileIntGroupingAggregatorFunction implements GroupingAg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ PercentileIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ PercentileIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileLongGroupingAggregatorFunction.java
index f2680fd7b5be..1baa4a662175 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/PercentileLongGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -70,7 +71,12 @@ public final class PercentileLongGroupingAggregatorFunction implements GroupingA
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class PercentileLongGroupingAggregatorFunction implements GroupingA
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class PercentileLongGroupingAggregatorFunction implements GroupingA
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- PercentileLongAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- PercentileLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class PercentileLongGroupingAggregatorFunction implements GroupingA
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class PercentileLongGroupingAggregatorFunction implements GroupingA
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ PercentileLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ PercentileLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ PercentileLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateDoubleGroupingAggregatorFunction.java
index e12686f2a66f..25923bf02a76 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateDoubleGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -74,7 +76,12 @@ public final class RateDoubleGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -90,7 +97,12 @@ public final class RateDoubleGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -105,6 +117,82 @@ public final class RateDoubleGroupingAggregatorFunction implements GroupingAggre
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateDoubleAggregator.combine(state, groupId, timestamps.getLong(v), values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateDoubleAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getDouble(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateDoubleAggregator.combine(state, groupId, timestamps.getLong(v), values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateDoubleAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getDouble(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -129,44 +217,6 @@ public final class RateDoubleGroupingAggregatorFunction implements GroupingAggre
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- RateDoubleAggregator.combine(state, groupId, timestamps.getLong(v), values.getDouble(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- RateDoubleAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getDouble(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateFloatGroupingAggregatorFunction.java
index 5e2aced92855..7dbe1a2de02b 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateFloatGroupingAggregatorFunction.java
@@ -15,6 +15,8 @@ import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -76,7 +78,12 @@ public final class RateFloatGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -92,7 +99,12 @@ public final class RateFloatGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -107,6 +119,82 @@ public final class RateFloatGroupingAggregatorFunction implements GroupingAggreg
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateFloatAggregator.combine(state, groupId, timestamps.getLong(v), values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateFloatAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getFloat(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateFloatAggregator.combine(state, groupId, timestamps.getLong(v), values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateFloatAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getFloat(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, FloatBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -131,44 +219,6 @@ public final class RateFloatGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- RateFloatAggregator.combine(state, groupId, timestamps.getLong(v), values.getFloat(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- RateFloatAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getFloat(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateIntGroupingAggregatorFunction.java
index c85a0ac5b9fe..4650ebf0c5bb 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateIntGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -74,7 +76,12 @@ public final class RateIntGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -90,7 +97,12 @@ public final class RateIntGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -105,6 +117,82 @@ public final class RateIntGroupingAggregatorFunction implements GroupingAggregat
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateIntAggregator.combine(state, groupId, timestamps.getLong(v), values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateIntAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getInt(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateIntAggregator.combine(state, groupId, timestamps.getLong(v), values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateIntAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getInt(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, IntBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -129,44 +217,6 @@ public final class RateIntGroupingAggregatorFunction implements GroupingAggregat
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- RateIntAggregator.combine(state, groupId, timestamps.getLong(v), values.getInt(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- RateIntAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getInt(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateLongGroupingAggregatorFunction.java
index 98996069fe55..a219a58068ea 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/RateLongGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -74,7 +76,12 @@ public final class RateLongGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock, timestampsVector);
}
@@ -90,7 +97,12 @@ public final class RateLongGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector, timestampsVector);
}
@@ -105,6 +117,82 @@ public final class RateLongGroupingAggregatorFunction implements GroupingAggrega
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateLongAggregator.combine(state, groupId, timestamps.getLong(v), values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateLongAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getLong(valuePosition));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ RateLongAggregator.combine(state, groupId, timestamps.getLong(v), values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values,
+ LongVector timestamps) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ var valuePosition = groupPosition + positionOffset;
+ RateLongAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getLong(valuePosition));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, LongBlock values,
LongVector timestamps) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -129,44 +217,6 @@ public final class RateLongGroupingAggregatorFunction implements GroupingAggrega
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- RateLongAggregator.combine(state, groupId, timestamps.getLong(v), values.getLong(v));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values,
- LongVector timestamps) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- var valuePosition = groupPosition + positionOffset;
- RateLongAggregator.combine(state, groupId, timestamps.getLong(valuePosition), values.getLong(valuePosition));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevDoubleGroupingAggregatorFunction.java
index bbf1930cf052..7cf0ab3e7b14 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevDoubleGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -68,7 +69,12 @@ public final class StdDevDoubleGroupingAggregatorFunction implements GroupingAgg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class StdDevDoubleGroupingAggregatorFunction implements GroupingAgg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,28 +110,7 @@ public final class StdDevDoubleGroupingAggregatorFunction implements GroupingAgg
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- StdDevDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- StdDevDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -141,7 +131,7 @@ public final class StdDevDoubleGroupingAggregatorFunction implements GroupingAgg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -155,6 +145,62 @@ public final class StdDevDoubleGroupingAggregatorFunction implements GroupingAgg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ StdDevDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ StdDevDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevFloatGroupingAggregatorFunction.java
index 818dd28386b9..e3bbbb5d4d62 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevFloatGroupingAggregatorFunction.java
@@ -15,7 +15,8 @@ import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -70,7 +71,12 @@ public final class StdDevFloatGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class StdDevFloatGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class StdDevFloatGroupingAggregatorFunction implements GroupingAggr
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- StdDevFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- StdDevFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class StdDevFloatGroupingAggregatorFunction implements GroupingAggr
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class StdDevFloatGroupingAggregatorFunction implements GroupingAggr
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ StdDevFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ StdDevFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevIntGroupingAggregatorFunction.java
index d8417d71dc78..b0c780b232fe 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevIntGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -68,7 +70,12 @@ public final class StdDevIntGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +91,12 @@ public final class StdDevIntGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,28 +111,7 @@ public final class StdDevIntGroupingAggregatorFunction implements GroupingAggreg
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- StdDevIntAggregator.combine(state, groupId, values.getInt(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- StdDevIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -141,7 +132,7 @@ public final class StdDevIntGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -155,6 +146,62 @@ public final class StdDevIntGroupingAggregatorFunction implements GroupingAggreg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ StdDevIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ StdDevIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevLongGroupingAggregatorFunction.java
index fc5f061a0462..7e33a0c70c14 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/StdDevLongGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -68,7 +69,12 @@ public final class StdDevLongGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class StdDevLongGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,28 +110,7 @@ public final class StdDevLongGroupingAggregatorFunction implements GroupingAggre
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- StdDevLongAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- StdDevLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -141,7 +131,7 @@ public final class StdDevLongGroupingAggregatorFunction implements GroupingAggre
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -155,6 +145,62 @@ public final class StdDevLongGroupingAggregatorFunction implements GroupingAggre
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ StdDevLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ StdDevLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ StdDevLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumDoubleGroupingAggregatorFunction.java
index d566756ca328..303bb3d0ff5d 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumDoubleGroupingAggregatorFunction.java
@@ -15,7 +15,8 @@ import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -68,7 +69,12 @@ public final class SumDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public final class SumDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -99,28 +110,7 @@ public final class SumDoubleGroupingAggregatorFunction implements GroupingAggreg
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SumDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- SumDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -141,7 +131,7 @@ public final class SumDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -155,6 +145,62 @@ public final class SumDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SumDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SumDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SumDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ SumDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumFloatGroupingAggregatorFunction.java
index e12f91f4451a..154057db5f46 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumFloatGroupingAggregatorFunction.java
@@ -17,7 +17,8 @@ import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -70,7 +71,12 @@ public final class SumFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -86,7 +92,12 @@ public final class SumFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -101,28 +112,7 @@ public final class SumFloatGroupingAggregatorFunction implements GroupingAggrega
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SumFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- SumFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +133,7 @@ public final class SumFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -157,6 +147,62 @@ public final class SumFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SumFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SumFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SumFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ SumFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumIntGroupingAggregatorFunction.java
index 91c04d937006..9b5cba8cd5a8 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumIntGroupingAggregatorFunction.java
@@ -13,6 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -67,7 +69,12 @@ public final class SumIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +90,12 @@ public final class SumIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +110,7 @@ public final class SumIntGroupingAggregatorFunction implements GroupingAggregato
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, SumIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, SumIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +131,7 @@ public final class SumIntGroupingAggregatorFunction implements GroupingAggregato
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +145,62 @@ public final class SumIntGroupingAggregatorFunction implements GroupingAggregato
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, SumIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, SumIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, SumIntAggregator.combine(state.getOrDefault(groupId), values.getInt(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, SumIntAggregator.combine(state.getOrDefault(groupId), values.getInt(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumLongGroupingAggregatorFunction.java
index e53dfa385775..a2969a4dddaa 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/SumLongGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -67,7 +68,12 @@ public final class SumLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -83,7 +89,12 @@ public final class SumLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -98,28 +109,7 @@ public final class SumLongGroupingAggregatorFunction implements GroupingAggregat
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- state.set(groupId, SumLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- state.set(groupId, SumLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -140,7 +130,7 @@ public final class SumLongGroupingAggregatorFunction implements GroupingAggregat
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -154,6 +144,62 @@ public final class SumLongGroupingAggregatorFunction implements GroupingAggregat
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, SumLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ state.set(groupId, SumLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ state.set(groupId, SumLongAggregator.combine(state.getOrDefault(groupId), values.getLong(v)));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ state.set(groupId, SumLongAggregator.combine(state.getOrDefault(groupId), values.getLong(groupPosition + positionOffset)));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBooleanGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBooleanGroupingAggregatorFunction.java
index dc0e2831ee3e..1fa211364cfc 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBooleanGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBooleanGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -71,7 +72,12 @@ public final class TopBooleanGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -87,7 +93,12 @@ public final class TopBooleanGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -102,28 +113,7 @@ public final class TopBooleanGroupingAggregatorFunction implements GroupingAggre
};
}
- private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopBooleanAggregator.combine(state, groupId, values.getBoolean(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- TopBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BooleanBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -144,7 +134,7 @@ public final class TopBooleanGroupingAggregatorFunction implements GroupingAggre
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BooleanVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -158,6 +148,62 @@ public final class TopBooleanGroupingAggregatorFunction implements GroupingAggre
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopBooleanAggregator.combine(state, groupId, values.getBoolean(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopBooleanAggregator.combine(state, groupId, values.getBoolean(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ TopBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBytesRefGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBytesRefGroupingAggregatorFunction.java
index aa779dfc4afa..4ab5bb987510 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBytesRefGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopBytesRefGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -72,7 +73,12 @@ public final class TopBytesRefGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -88,7 +94,12 @@ public final class TopBytesRefGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -103,6 +114,80 @@ public final class TopBytesRefGroupingAggregatorFunction implements GroupingAggr
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -126,43 +211,6 @@ public final class TopBytesRefGroupingAggregatorFunction implements GroupingAggr
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- TopBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopDoubleGroupingAggregatorFunction.java
index 68bdee76e48a..8a2f4aef9cf3 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopDoubleGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -71,7 +72,12 @@ public final class TopDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -87,7 +93,12 @@ public final class TopDoubleGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -102,28 +113,7 @@ public final class TopDoubleGroupingAggregatorFunction implements GroupingAggreg
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- TopDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -144,7 +134,7 @@ public final class TopDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -158,6 +148,62 @@ public final class TopDoubleGroupingAggregatorFunction implements GroupingAggreg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ TopDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopFloatGroupingAggregatorFunction.java
index cf1063a02fcb..d09bf60c82ac 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopFloatGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -71,7 +72,12 @@ public final class TopFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -87,7 +93,12 @@ public final class TopFloatGroupingAggregatorFunction implements GroupingAggrega
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -102,28 +113,7 @@ public final class TopFloatGroupingAggregatorFunction implements GroupingAggrega
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- TopFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -144,7 +134,7 @@ public final class TopFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -158,6 +148,62 @@ public final class TopFloatGroupingAggregatorFunction implements GroupingAggrega
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ TopFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIntGroupingAggregatorFunction.java
index 67fa432b8799..786f0660ea06 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIntGroupingAggregatorFunction.java
@@ -11,6 +11,8 @@ import java.lang.StringBuilder;
import java.util.List;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -69,7 +71,12 @@ public final class TopIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -85,7 +92,12 @@ public final class TopIntGroupingAggregatorFunction implements GroupingAggregato
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -100,28 +112,7 @@ public final class TopIntGroupingAggregatorFunction implements GroupingAggregato
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopIntAggregator.combine(state, groupId, values.getInt(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- TopIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -142,7 +133,7 @@ public final class TopIntGroupingAggregatorFunction implements GroupingAggregato
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -156,6 +147,62 @@ public final class TopIntGroupingAggregatorFunction implements GroupingAggregato
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ TopIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIpGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIpGroupingAggregatorFunction.java
index eb5631c68d17..3d1137486fb7 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIpGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopIpGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -72,7 +73,12 @@ public final class TopIpGroupingAggregatorFunction implements GroupingAggregator
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -88,7 +94,12 @@ public final class TopIpGroupingAggregatorFunction implements GroupingAggregator
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -103,6 +114,80 @@ public final class TopIpGroupingAggregatorFunction implements GroupingAggregator
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -126,43 +211,6 @@ public final class TopIpGroupingAggregatorFunction implements GroupingAggregator
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopIpAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- TopIpAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopLongGroupingAggregatorFunction.java
index 58b62c211a0b..820aa3c6c63e 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/TopLongGroupingAggregatorFunction.java
@@ -11,7 +11,8 @@ import java.lang.StringBuilder;
import java.util.List;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -71,7 +72,12 @@ public final class TopLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -87,7 +93,12 @@ public final class TopLongGroupingAggregatorFunction implements GroupingAggregat
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -102,28 +113,7 @@ public final class TopLongGroupingAggregatorFunction implements GroupingAggregat
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- TopLongAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- TopLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -144,7 +134,7 @@ public final class TopLongGroupingAggregatorFunction implements GroupingAggregat
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -158,6 +148,62 @@ public final class TopLongGroupingAggregatorFunction implements GroupingAggregat
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ TopLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ TopLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ TopLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBooleanGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBooleanGroupingAggregatorFunction.java
index 772de15468ef..a928d0908eb8 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBooleanGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBooleanGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -64,7 +65,12 @@ public final class ValuesBooleanGroupingAggregatorFunction implements GroupingAg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -80,7 +86,12 @@ public final class ValuesBooleanGroupingAggregatorFunction implements GroupingAg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -95,28 +106,7 @@ public final class ValuesBooleanGroupingAggregatorFunction implements GroupingAg
};
}
- private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- ValuesBooleanAggregator.combine(state, groupId, values.getBoolean(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- ValuesBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BooleanBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -137,7 +127,7 @@ public final class ValuesBooleanGroupingAggregatorFunction implements GroupingAg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BooleanVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BooleanVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -151,6 +141,62 @@ public final class ValuesBooleanGroupingAggregatorFunction implements GroupingAg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesBooleanAggregator.combine(state, groupId, values.getBoolean(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesBooleanAggregator.combine(state, groupId, values.getBoolean(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, BooleanVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ ValuesBooleanAggregator.combine(state, groupId, values.getBoolean(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBytesRefGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBytesRefGroupingAggregatorFunction.java
index 93d060889d28..662c4b445496 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBytesRefGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesBytesRefGroupingAggregatorFunction.java
@@ -14,7 +14,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -65,7 +66,12 @@ public final class ValuesBytesRefGroupingAggregatorFunction implements GroupingA
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -81,7 +87,12 @@ public final class ValuesBytesRefGroupingAggregatorFunction implements GroupingA
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -96,6 +107,80 @@ public final class ValuesBytesRefGroupingAggregatorFunction implements GroupingA
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -119,43 +204,6 @@ public final class ValuesBytesRefGroupingAggregatorFunction implements GroupingA
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- ValuesBytesRefAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- ValuesBytesRefAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesDoubleGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesDoubleGroupingAggregatorFunction.java
index 04984d5c0640..76c865b33fd0 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesDoubleGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesDoubleGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -64,7 +65,12 @@ public final class ValuesDoubleGroupingAggregatorFunction implements GroupingAgg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -80,7 +86,12 @@ public final class ValuesDoubleGroupingAggregatorFunction implements GroupingAgg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -95,28 +106,7 @@ public final class ValuesDoubleGroupingAggregatorFunction implements GroupingAgg
};
}
- private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- ValuesDoubleAggregator.combine(state, groupId, values.getDouble(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- ValuesDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, DoubleBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -137,7 +127,7 @@ public final class ValuesDoubleGroupingAggregatorFunction implements GroupingAgg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, DoubleVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, DoubleVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -151,6 +141,62 @@ public final class ValuesDoubleGroupingAggregatorFunction implements GroupingAgg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesDoubleAggregator.combine(state, groupId, values.getDouble(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, DoubleVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ ValuesDoubleAggregator.combine(state, groupId, values.getDouble(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesFloatGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesFloatGroupingAggregatorFunction.java
index 1848b9e4f141..bed9a884ccd1 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesFloatGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesFloatGroupingAggregatorFunction.java
@@ -13,7 +13,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
import org.elasticsearch.compute.data.FloatVector;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.operator.DriverContext;
@@ -64,7 +65,12 @@ public final class ValuesFloatGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -80,7 +86,12 @@ public final class ValuesFloatGroupingAggregatorFunction implements GroupingAggr
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -95,28 +106,7 @@ public final class ValuesFloatGroupingAggregatorFunction implements GroupingAggr
};
}
- private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- ValuesFloatAggregator.combine(state, groupId, values.getFloat(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- ValuesFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, FloatBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -137,7 +127,7 @@ public final class ValuesFloatGroupingAggregatorFunction implements GroupingAggr
}
}
- private void addRawInput(int positionOffset, IntBlock groups, FloatVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, FloatVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -151,6 +141,62 @@ public final class ValuesFloatGroupingAggregatorFunction implements GroupingAggr
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesFloatAggregator.combine(state, groupId, values.getFloat(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, FloatVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ ValuesFloatAggregator.combine(state, groupId, values.getFloat(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesIntGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesIntGroupingAggregatorFunction.java
index f0878fb085e6..fb801eadcf5c 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesIntGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesIntGroupingAggregatorFunction.java
@@ -11,6 +11,8 @@ import java.lang.StringBuilder;
import java.util.List;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -62,7 +64,12 @@ public final class ValuesIntGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -78,7 +85,12 @@ public final class ValuesIntGroupingAggregatorFunction implements GroupingAggreg
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -93,28 +105,7 @@ public final class ValuesIntGroupingAggregatorFunction implements GroupingAggreg
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- ValuesIntAggregator.combine(state, groupId, values.getInt(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- ValuesIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -135,7 +126,7 @@ public final class ValuesIntGroupingAggregatorFunction implements GroupingAggreg
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -149,6 +140,62 @@ public final class ValuesIntGroupingAggregatorFunction implements GroupingAggreg
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesIntAggregator.combine(state, groupId, values.getInt(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ ValuesIntAggregator.combine(state, groupId, values.getInt(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesLongGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesLongGroupingAggregatorFunction.java
index 00bd36cda252..061af9fcc921 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesLongGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/ValuesLongGroupingAggregatorFunction.java
@@ -11,7 +11,8 @@ import java.lang.StringBuilder;
import java.util.List;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -64,7 +65,12 @@ public final class ValuesLongGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -80,7 +86,12 @@ public final class ValuesLongGroupingAggregatorFunction implements GroupingAggre
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -95,28 +106,7 @@ public final class ValuesLongGroupingAggregatorFunction implements GroupingAggre
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- ValuesLongAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- ValuesLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -137,7 +127,7 @@ public final class ValuesLongGroupingAggregatorFunction implements GroupingAggre
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -151,6 +141,62 @@ public final class ValuesLongGroupingAggregatorFunction implements GroupingAggre
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ ValuesLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ ValuesLongAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ ValuesLongAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunction.java
index 9a6328f075bc..a959f808e438 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunction.java
@@ -17,7 +17,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -74,7 +75,12 @@ public final class SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunct
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -90,7 +96,12 @@ public final class SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunct
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -105,28 +116,7 @@ public final class SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunct
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialCentroidCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- SpatialCentroidCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -147,7 +137,7 @@ public final class SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunct
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -161,6 +151,62 @@ public final class SpatialCentroidCartesianPointDocValuesGroupingAggregatorFunct
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialCentroidCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ SpatialCentroidCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFunction.java
index 1681b1a210d3..a3593b8152dd 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFunction.java
@@ -20,7 +20,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -77,7 +78,12 @@ public final class SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFu
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -93,7 +99,12 @@ public final class SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFu
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -108,6 +119,80 @@ public final class SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFu
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialCentroidCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialCentroidCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -131,43 +216,6 @@ public final class SpatialCentroidCartesianPointSourceValuesGroupingAggregatorFu
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialCentroidCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- SpatialCentroidCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction.java
index 36413308e967..77a959e65486 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction.java
@@ -17,7 +17,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -74,7 +75,12 @@ public final class SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction im
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -90,7 +96,12 @@ public final class SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction im
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -105,28 +116,7 @@ public final class SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction im
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialCentroidGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- SpatialCentroidGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -147,7 +137,7 @@ public final class SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction im
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -161,6 +151,62 @@ public final class SpatialCentroidGeoPointDocValuesGroupingAggregatorFunction im
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialCentroidGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ SpatialCentroidGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction.java
index 935dd8f56887..fc05c0932f50 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction.java
@@ -20,7 +20,8 @@ import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.DoubleVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -77,7 +78,12 @@ public final class SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -93,7 +99,12 @@ public final class SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -108,6 +119,80 @@ public final class SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialCentroidGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialCentroidGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialCentroidGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -131,43 +216,6 @@ public final class SpatialCentroidGeoPointSourceValuesGroupingAggregatorFunction
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialCentroidGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- SpatialCentroidGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointDocValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointDocValuesGroupingAggregatorFunction.java
index 8a9807be22ef..76f66cf41d56 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointDocValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointDocValuesGroupingAggregatorFunction.java
@@ -15,6 +15,8 @@ import org.elasticsearch.compute.aggregation.IntermediateStateDesc;
import org.elasticsearch.compute.aggregation.SeenGroupIds;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -71,7 +73,12 @@ public final class SpatialExtentCartesianPointDocValuesGroupingAggregatorFunctio
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -87,7 +94,12 @@ public final class SpatialExtentCartesianPointDocValuesGroupingAggregatorFunctio
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -102,28 +114,7 @@ public final class SpatialExtentCartesianPointDocValuesGroupingAggregatorFunctio
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialExtentCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- SpatialExtentCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -144,7 +135,7 @@ public final class SpatialExtentCartesianPointDocValuesGroupingAggregatorFunctio
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -158,6 +149,62 @@ public final class SpatialExtentCartesianPointDocValuesGroupingAggregatorFunctio
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ SpatialExtentCartesianPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunction.java
index 49198bbd74c6..3c1159eb0de1 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunction.java
@@ -18,6 +18,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -72,7 +74,12 @@ public final class SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunc
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -88,7 +95,12 @@ public final class SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunc
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -103,6 +115,80 @@ public final class SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunc
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -126,43 +212,6 @@ public final class SpatialExtentCartesianPointSourceValuesGroupingAggregatorFunc
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialExtentCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- SpatialExtentCartesianPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunction.java
index ca6b567810ae..7057281c2ec6 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunction.java
@@ -15,6 +15,8 @@ import org.elasticsearch.compute.aggregation.IntermediateStateDesc;
import org.elasticsearch.compute.aggregation.SeenGroupIds;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -69,7 +71,12 @@ public final class SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunctio
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -85,7 +92,12 @@ public final class SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunctio
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -100,27 +112,7 @@ public final class SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunctio
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- int[] valuesArray = new int[valuesEnd - valuesStart];
- for (int v = valuesStart; v < valuesEnd; v++) {
- valuesArray[v-valuesStart] = values.getInt(v);
- }
- SpatialExtentCartesianShapeDocValuesAggregator.combine(state, groupId, valuesArray);
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- // This type does not support vectors because all values are multi-valued
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -143,7 +135,54 @@ public final class SpatialExtentCartesianShapeDocValuesGroupingAggregatorFunctio
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
+ // This type does not support vectors because all values are multi-valued
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ int[] valuesArray = new int[valuesEnd - valuesStart];
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ valuesArray[v-valuesStart] = values.getInt(v);
+ }
+ SpatialExtentCartesianShapeDocValuesAggregator.combine(state, groupId, valuesArray);
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ // This type does not support vectors because all values are multi-valued
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ int[] valuesArray = new int[valuesEnd - valuesStart];
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ valuesArray[v-valuesStart] = values.getInt(v);
+ }
+ SpatialExtentCartesianShapeDocValuesAggregator.combine(state, groupId, valuesArray);
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
// This type does not support vectors because all values are multi-valued
}
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunction.java
index bf7e95c4f040..21241efbf319 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunction.java
@@ -18,6 +18,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -72,7 +74,12 @@ public final class SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunc
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -88,7 +95,12 @@ public final class SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunc
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -103,6 +115,80 @@ public final class SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunc
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentCartesianShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentCartesianShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentCartesianShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentCartesianShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -126,43 +212,6 @@ public final class SpatialExtentCartesianShapeSourceValuesGroupingAggregatorFunc
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialExtentCartesianShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- SpatialExtentCartesianShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointDocValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointDocValuesGroupingAggregatorFunction.java
index 71abb7296232..387ed0abc34b 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointDocValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointDocValuesGroupingAggregatorFunction.java
@@ -15,6 +15,8 @@ import org.elasticsearch.compute.aggregation.IntermediateStateDesc;
import org.elasticsearch.compute.aggregation.SeenGroupIds;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -73,7 +75,12 @@ public final class SpatialExtentGeoPointDocValuesGroupingAggregatorFunction impl
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -89,7 +96,12 @@ public final class SpatialExtentGeoPointDocValuesGroupingAggregatorFunction impl
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -104,28 +116,7 @@ public final class SpatialExtentGeoPointDocValuesGroupingAggregatorFunction impl
};
}
- private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialExtentGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- SpatialExtentGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, LongBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -146,7 +137,7 @@ public final class SpatialExtentGeoPointDocValuesGroupingAggregatorFunction impl
}
}
- private void addRawInput(int positionOffset, IntBlock groups, LongVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, LongVector values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -160,6 +151,62 @@ public final class SpatialExtentGeoPointDocValuesGroupingAggregatorFunction impl
}
}
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(v));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, LongVector values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ SpatialExtentGeoPointDocValuesAggregator.combine(state, groupId, values.getLong(groupPosition + positionOffset));
+ }
+ }
+
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction.java
index 437c1f017ebc..9d9c10902ada 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction.java
@@ -18,6 +18,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -74,7 +76,12 @@ public final class SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction i
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -90,7 +97,12 @@ public final class SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction i
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -105,6 +117,80 @@ public final class SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction i
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -128,43 +214,6 @@ public final class SpatialExtentGeoPointSourceValuesGroupingAggregatorFunction i
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialExtentGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- SpatialExtentGeoPointSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction.java
index b0a01d268280..82553910e158 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction.java
@@ -15,6 +15,8 @@ import org.elasticsearch.compute.aggregation.IntermediateStateDesc;
import org.elasticsearch.compute.aggregation.SeenGroupIds;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -71,7 +73,12 @@ public final class SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction impl
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -87,7 +94,12 @@ public final class SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction impl
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -102,27 +114,7 @@ public final class SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction impl
};
}
- private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- int groupId = groups.getInt(groupPosition);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- int[] valuesArray = new int[valuesEnd - valuesStart];
- for (int v = valuesStart; v < valuesEnd; v++) {
- valuesArray[v-valuesStart] = values.getInt(v);
- }
- SpatialExtentGeoShapeDocValuesAggregator.combine(state, groupId, valuesArray);
- }
- }
-
- private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
- // This type does not support vectors because all values are multi-valued
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, IntBlock values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntBlock values) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
@@ -145,7 +137,54 @@ public final class SpatialExtentGeoShapeDocValuesGroupingAggregatorFunction impl
}
}
- private void addRawInput(int positionOffset, IntBlock groups, IntVector values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, IntVector values) {
+ // This type does not support vectors because all values are multi-valued
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ int[] valuesArray = new int[valuesEnd - valuesStart];
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ valuesArray[v-valuesStart] = values.getInt(v);
+ }
+ SpatialExtentGeoShapeDocValuesAggregator.combine(state, groupId, valuesArray);
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, IntVector values) {
+ // This type does not support vectors because all values are multi-valued
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntBlock values) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ int groupId = groups.getInt(groupPosition);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ int[] valuesArray = new int[valuesEnd - valuesStart];
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ valuesArray[v-valuesStart] = values.getInt(v);
+ }
+ SpatialExtentGeoShapeDocValuesAggregator.combine(state, groupId, valuesArray);
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntVector groups, IntVector values) {
// This type does not support vectors because all values are multi-valued
}
diff --git a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction.java
index 029e935f4765..ccab0870e206 100644
--- a/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/spatial/SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction.java
@@ -18,6 +18,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -74,7 +76,12 @@ public final class SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction i
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -90,7 +97,12 @@ public final class SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction i
}
return new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesVector);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesVector);
}
@@ -105,6 +117,80 @@ public final class SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction i
};
}
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentGeoShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentGeoShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefBlock values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ if (values.isNull(groupPosition + positionOffset)) {
+ continue;
+ }
+ int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
+ int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
+ for (int v = valuesStart; v < valuesEnd; v++) {
+ SpatialExtentGeoShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
+ }
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, BytesRefVector values) {
+ BytesRef scratch = new BytesRef();
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = groups.getInt(g);
+ SpatialExtentGeoShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
+ }
+ }
+ }
+
private void addRawInput(int positionOffset, IntVector groups, BytesRefBlock values) {
BytesRef scratch = new BytesRef();
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
@@ -128,43 +214,6 @@ public final class SpatialExtentGeoShapeSourceValuesGroupingAggregatorFunction i
}
}
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefBlock values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- if (values.isNull(groupPosition + positionOffset)) {
- continue;
- }
- int valuesStart = values.getFirstValueIndex(groupPosition + positionOffset);
- int valuesEnd = valuesStart + values.getValueCount(groupPosition + positionOffset);
- for (int v = valuesStart; v < valuesEnd; v++) {
- SpatialExtentGeoShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(v, scratch));
- }
- }
- }
- }
-
- private void addRawInput(int positionOffset, IntBlock groups, BytesRefVector values) {
- BytesRef scratch = new BytesRef();
- for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
- if (groups.isNull(groupPosition)) {
- continue;
- }
- int groupStart = groups.getFirstValueIndex(groupPosition);
- int groupEnd = groupStart + groups.getValueCount(groupPosition);
- for (int g = groupStart; g < groupEnd; g++) {
- int groupId = groups.getInt(g);
- SpatialExtentGeoShapeSourceValuesAggregator.combine(state, groupId, values.getBytesRef(groupPosition + positionOffset, scratch));
- }
- }
- }
-
@Override
public void selectedMayContainUnseenGroups(SeenGroupIds seenGroupIds) {
state.enableGroupIdTracking(seenGroupIds);
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/CountGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/CountGroupingAggregatorFunction.java
index 124fb5a1745b..611118d03872 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/CountGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/CountGroupingAggregatorFunction.java
@@ -11,7 +11,8 @@ import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
import org.elasticsearch.compute.data.ElementType;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
import org.elasticsearch.compute.data.LongVector;
@@ -68,7 +69,12 @@ public class CountGroupingAggregatorFunction implements GroupingAggregatorFuncti
}
return new AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(positionOffset, groupIds, valuesBlock);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(positionOffset, groupIds, valuesBlock);
}
@@ -84,7 +90,12 @@ public class CountGroupingAggregatorFunction implements GroupingAggregatorFuncti
}
return new AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addRawInput(groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
addRawInput(groupIds);
}
@@ -109,7 +120,25 @@ public class CountGroupingAggregatorFunction implements GroupingAggregatorFuncti
}
}
- private void addRawInput(int positionOffset, IntBlock groups, Block values) {
+ private void addRawInput(int positionOffset, IntArrayBlock groups, Block values) {
+ int position = positionOffset;
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++, position++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = Math.toIntExact(groups.getInt(g));
+ if (values.isNull(position)) {
+ continue;
+ }
+ state.increment(groupId, values.getValueCount(position));
+ }
+ }
+ }
+
+ private void addRawInput(int positionOffset, IntBigArrayBlock groups, Block values) {
int position = positionOffset;
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++, position++) {
if (groups.isNull(groupPosition)) {
@@ -140,7 +169,24 @@ public class CountGroupingAggregatorFunction implements GroupingAggregatorFuncti
/**
* This method is called for count all.
*/
- private void addRawInput(IntBlock groups) {
+ private void addRawInput(IntArrayBlock groups) {
+ for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
+ if (groups.isNull(groupPosition)) {
+ continue;
+ }
+ int groupStart = groups.getFirstValueIndex(groupPosition);
+ int groupEnd = groupStart + groups.getValueCount(groupPosition);
+ for (int g = groupStart; g < groupEnd; g++) {
+ int groupId = Math.toIntExact(groups.getInt(g));
+ state.increment(groupId, 1);
+ }
+ }
+ }
+
+ /**
+ * This method is called for count all.
+ */
+ private void addRawInput(IntBigArrayBlock groups) {
for (int groupPosition = 0; groupPosition < groups.getPositionCount(); groupPosition++) {
if (groups.isNull(groupPosition)) {
continue;
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FilteredGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FilteredGroupingAggregatorFunction.java
index f34129c1116e..8b7734fe33ab 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FilteredGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FilteredGroupingAggregatorFunction.java
@@ -10,6 +10,8 @@ package org.elasticsearch.compute.aggregation;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BooleanVector;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -56,7 +58,21 @@ record FilteredGroupingAggregatorFunction(GroupingAggregatorFunction next, EvalO
private record FilteredAddInput(BooleanVector mask, AddInput nextAdd, int positionCount) implements AddInput {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntVector groupIds) {
+ addBlock(positionOffset, groupIds.asBlock());
+ }
+
+ private void addBlock(int positionOffset, IntBlock groupIds) {
if (positionOffset == 0) {
try (IntBlock filtered = groupIds.keepMask(mask)) {
nextAdd.add(positionOffset, filtered);
@@ -73,11 +89,6 @@ record FilteredGroupingAggregatorFunction(GroupingAggregatorFunction next, EvalO
}
}
- @Override
- public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
- }
-
@Override
public void close() {
Releasables.close(mask, nextAdd);
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FromPartialGroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FromPartialGroupingAggregatorFunction.java
index 1706b8c02399..19012cabce5a 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FromPartialGroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/FromPartialGroupingAggregatorFunction.java
@@ -10,6 +10,8 @@ package org.elasticsearch.compute.aggregation;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.CompositeBlock;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -46,6 +48,18 @@ public class FromPartialGroupingAggregatorFunction implements GroupingAggregator
throw new IllegalStateException("Intermediate group id must not have nulls");
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ assert false : "Intermediate group id must not have nulls";
+ throw new IllegalStateException("Intermediate group id must not have nulls");
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ assert false : "Intermediate group id must not have nulls";
+ throw new IllegalStateException("Intermediate group id must not have nulls");
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
addIntermediateInput(positionOffset, groupIds, page);
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregator.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregator.java
index 268ac3ba3267..e0d82b1f145b 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregator.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregator.java
@@ -9,6 +9,8 @@ package org.elasticsearch.compute.aggregation;
import org.elasticsearch.compute.Describable;
import org.elasticsearch.compute.data.Block;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -45,6 +47,16 @@ public class GroupingAggregator implements Releasable {
throw new IllegalStateException("Intermediate group id must not have nulls");
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ throw new IllegalStateException("Intermediate group id must not have nulls");
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ throw new IllegalStateException("Intermediate group id must not have nulls");
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
aggregatorFunction.addIntermediateInput(positionOffset, groupIds, page);
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunction.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunction.java
index d5d432655620..556902174f21 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunction.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunction.java
@@ -8,8 +8,12 @@
package org.elasticsearch.compute.aggregation;
import org.elasticsearch.compute.data.Block;
+import org.elasticsearch.compute.data.ConstantNullBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
+import org.elasticsearch.compute.data.IntVectorBlock;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.compute.data.Vector;
import org.elasticsearch.core.Releasable;
@@ -48,12 +52,40 @@ public interface GroupingAggregatorFunction extends Releasable {
* be skipped entirely or the groupIds block could contain a
* {@code null} value at that position.
*
+ *
+ * This method delegates the processing to the other overloads for specific groupIds block types.
+ *
* @param positionOffset offset into the {@link Page} used to build this
* {@link AddInput} of these ids
* @param groupIds {@link Block} of group id, some of which may be null
* or multivalued
*/
- void add(int positionOffset, IntBlock groupIds);
+ default void add(int positionOffset, IntBlock groupIds) {
+ switch (groupIds) {
+ case ConstantNullBlock ignored:
+ // No-op
+ break;
+ case IntVectorBlock b:
+ add(positionOffset, b.asVector());
+ break;
+ case IntArrayBlock b:
+ add(positionOffset, b);
+ break;
+ case IntBigArrayBlock b:
+ add(positionOffset, b);
+ break;
+ }
+ }
+
+ /**
+ * Implementation of {@link #add(int, IntBlock)} for a specific type of block.
+ */
+ void add(int positionOffset, IntArrayBlock groupIds);
+
+ /**
+ * Implementation of {@link #add(int, IntBlock)} for a specific type of block.
+ */
+ void add(int positionOffset, IntBigArrayBlock groupIds);
/**
* Send a batch of group ids to the aggregator. The {@code groupIds}
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/table/BlockHashRowInTableLookup.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/table/BlockHashRowInTableLookup.java
index c198853bb36a..f00606f67548 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/table/BlockHashRowInTableLookup.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/table/BlockHashRowInTableLookup.java
@@ -12,6 +12,8 @@ import org.elasticsearch.compute.aggregation.GroupingAggregatorFunction;
import org.elasticsearch.compute.aggregation.blockhash.BlockHash;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BlockFactory;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
@@ -40,7 +42,23 @@ final class BlockHashRowInTableLookup extends RowInTableLookup {
private int lastOrd = -1;
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ for (int p = 0; p < groupIds.getPositionCount(); p++) {
+ int first = groupIds.getFirstValueIndex(p);
+ int end = groupIds.getValueCount(p) + first;
+ for (int i = first; i < end; i++) {
+ int ord = groupIds.getInt(i);
+ if (ord != lastOrd + 1) {
+ // TODO double check these errors over REST once we have LOOKUP
+ throw new IllegalArgumentException("found a duplicate row");
+ }
+ lastOrd = ord;
+ }
+ }
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
for (int p = 0; p < groupIds.getPositionCount(); p++) {
int first = groupIds.getFirstValueIndex(p);
int end = groupIds.getValueCount(p) + first;
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ConstantNullBlock.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ConstantNullBlock.java
index 94cd0bf9ddd2..2ed905f4299c 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ConstantNullBlock.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/ConstantNullBlock.java
@@ -19,7 +19,7 @@ import java.util.Objects;
/**
* Block implementation representing a constant null value.
*/
-final class ConstantNullBlock extends AbstractNonThreadSafeRefCounted
+public final class ConstantNullBlock extends AbstractNonThreadSafeRefCounted
implements
BooleanBlock,
IntBlock,
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/X-ArrayBlock.java.st b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/X-ArrayBlock.java.st
index 3b3b4c5fe3d3..5ebfc7bd4f9f 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/X-ArrayBlock.java.st
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/X-ArrayBlock.java.st
@@ -29,7 +29,7 @@ $if(BytesRef)$
$endif$
* This class is generated. Edit {@code X-ArrayBlock.java.st} instead.
*/
-final class $Type$ArrayBlock extends AbstractArrayBlock implements $Type$Block {
+public final class $Type$ArrayBlock extends AbstractArrayBlock implements $Type$Block {
static final long BASE_RAM_BYTES_USED = RamUsageEstimator.shallowSizeOfInstance($Type$ArrayBlock.class);
diff --git a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/HashAggregationOperator.java b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/HashAggregationOperator.java
index 75d5a5bc5132..2c6f9312e64b 100644
--- a/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/HashAggregationOperator.java
+++ b/x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/HashAggregationOperator.java
@@ -20,7 +20,8 @@ import org.elasticsearch.compute.aggregation.GroupingAggregatorEvaluationContext
import org.elasticsearch.compute.aggregation.GroupingAggregatorFunction;
import org.elasticsearch.compute.aggregation.blockhash.BlockHash;
import org.elasticsearch.compute.data.Block;
-import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.Page;
import org.elasticsearch.core.Releasables;
@@ -145,17 +146,21 @@ public class HashAggregationOperator implements Operator {
long aggStart;
@Override
- public void add(int positionOffset, IntBlock groupIds) {
- IntVector groupIdsVector = groupIds.asVector();
- if (groupIdsVector != null) {
- add(positionOffset, groupIdsVector);
- } else {
- startAggEndHash();
- for (GroupingAggregatorFunction.AddInput p : prepared) {
- p.add(positionOffset, groupIds);
- }
- end();
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ startAggEndHash();
+ for (GroupingAggregatorFunction.AddInput p : prepared) {
+ p.add(positionOffset, groupIds);
}
+ end();
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ startAggEndHash();
+ for (GroupingAggregatorFunction.AddInput p : prepared) {
+ p.add(positionOffset, groupIds);
+ }
+ end();
}
@Override
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunctionTestCase.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunctionTestCase.java
index 0dccce6040e6..9b8246be4979 100644
--- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunctionTestCase.java
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/GroupingAggregatorFunctionTestCase.java
@@ -12,13 +12,17 @@ import org.apache.lucene.util.BytesRef;
import org.elasticsearch.common.util.BitArray;
import org.elasticsearch.compute.ConstantBooleanExpressionEvaluator;
import org.elasticsearch.compute.aggregation.blockhash.BlockHash;
+import org.elasticsearch.compute.aggregation.blockhash.BlockHashWrapper;
import org.elasticsearch.compute.data.Block;
import org.elasticsearch.compute.data.BlockFactory;
+import org.elasticsearch.compute.data.BlockTypeRandomizer;
import org.elasticsearch.compute.data.BooleanBlock;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.ElementType;
import org.elasticsearch.compute.data.FloatBlock;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -37,6 +41,7 @@ import org.elasticsearch.compute.test.CannedSourceOperator;
import org.elasticsearch.compute.test.TestBlockFactory;
import org.elasticsearch.core.Nullable;
import org.elasticsearch.core.Releasables;
+import org.elasticsearch.index.analysis.AnalysisRegistry;
import org.elasticsearch.xpack.esql.core.type.DataType;
import org.hamcrest.Matcher;
@@ -45,6 +50,7 @@ import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.function.Function;
+import java.util.function.Supplier;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
@@ -102,7 +108,7 @@ public abstract class GroupingAggregatorFunctionTestCase extends ForkingOperator
if (randomBoolean()) {
supplier = chunkGroups(emitChunkSize, supplier);
}
- return new HashAggregationOperator.HashAggregationOperatorFactory(
+ return new RandomizingHashAggregationOperatorFactory(
List.of(new BlockHash.GroupSpec(0, ElementType.LONG)),
mode,
List.of(supplier.groupingAggregatorFactory(mode, channels(mode))),
@@ -648,8 +654,7 @@ public abstract class GroupingAggregatorFunctionTestCase extends ForkingOperator
return seen;
}, page);
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
for (int offset = 0; offset < groupIds.getPositionCount(); offset += emitChunkSize) {
try (IntBlock.Builder builder = blockFactory().newIntBlockBuilder(emitChunkSize)) {
int endP = Math.min(groupIds.getPositionCount(), offset + emitChunkSize);
@@ -682,6 +687,16 @@ public abstract class GroupingAggregatorFunctionTestCase extends ForkingOperator
}
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
int[] chunk = new int[emitChunkSize];
@@ -766,4 +781,84 @@ public abstract class GroupingAggregatorFunctionTestCase extends ForkingOperator
};
}
+ /**
+ * Custom {@link HashAggregationOperator.HashAggregationOperatorFactory} implementation that
+ * randomizes the GroupIds block type passed to AddInput.
+ *
+ * This helps testing the different overloads of
+ * {@link org.elasticsearch.compute.aggregation.GroupingAggregatorFunction.AddInput#add}
+ *
+ */
+ private record RandomizingHashAggregationOperatorFactory(
+ List groups,
+ AggregatorMode aggregatorMode,
+ List aggregators,
+ int maxPageSize,
+ AnalysisRegistry analysisRegistry
+ ) implements Operator.OperatorFactory {
+
+ @Override
+ public Operator get(DriverContext driverContext) {
+ Supplier blockHashSupplier = () -> {
+ BlockHash blockHash = groups.stream().anyMatch(BlockHash.GroupSpec::isCategorize)
+ ? BlockHash.buildCategorizeBlockHash(
+ groups,
+ aggregatorMode,
+ driverContext.blockFactory(),
+ analysisRegistry,
+ maxPageSize
+ )
+ : BlockHash.build(groups, driverContext.blockFactory(), maxPageSize, false);
+
+ return new BlockHashWrapper(driverContext.blockFactory(), blockHash) {
+ @Override
+ public void add(Page page, GroupingAggregatorFunction.AddInput addInput) {
+ blockHash.add(page, new GroupingAggregatorFunction.AddInput() {
+ @Override
+ public void add(int positionOffset, IntBlock groupIds) {
+ IntBlock newGroupIds = aggregatorMode.isInputPartial()
+ ? groupIds
+ : BlockTypeRandomizer.randomizeBlockType(groupIds);
+ addInput.add(positionOffset, newGroupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ add(positionOffset, (IntBlock) groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ add(positionOffset, (IntBlock) groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntVector groupIds) {
+ add(positionOffset, groupIds.asBlock());
+ }
+
+ @Override
+ public void close() {
+ addInput.close();
+ }
+ });
+ }
+ };
+ };
+
+ return new HashAggregationOperator(aggregators, blockHashSupplier, driverContext);
+ }
+
+ @Override
+ public String describe() {
+ return new HashAggregationOperator.HashAggregationOperatorFactory(
+ groups,
+ aggregatorMode,
+ aggregators,
+ maxPageSize,
+ analysisRegistry
+ ).describe();
+ }
+ }
+
}
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/AddPageTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/AddPageTests.java
index fb8b01e68c6c..c9628cc8074d 100644
--- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/AddPageTests.java
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/AddPageTests.java
@@ -11,6 +11,8 @@ import org.elasticsearch.common.unit.ByteSizeValue;
import org.elasticsearch.compute.aggregation.GroupingAggregatorFunction;
import org.elasticsearch.compute.data.BlockFactory;
import org.elasticsearch.compute.data.BlockFactoryTests;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.test.ESTestCase;
@@ -156,8 +158,7 @@ public class AddPageTests extends ESTestCase {
private class TestAddInput implements GroupingAggregatorFunction.AddInput {
private final List added = new ArrayList<>();
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
List> result = new ArrayList<>(groupIds.getPositionCount());
for (int p = 0; p < groupIds.getPositionCount(); p++) {
int valueCount = groupIds.getValueCount(p);
@@ -172,9 +173,19 @@ public class AddPageTests extends ESTestCase {
added.add(new Added(positionOffset, result));
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
@@ -187,7 +198,12 @@ public class AddPageTests extends ESTestCase {
private int count;
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ count++;
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
count++;
}
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashTests.java
index ed86969a6222..4d77cd9aa234 100644
--- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashTests.java
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashTests.java
@@ -19,6 +19,8 @@ import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.DoubleBlock;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -1276,7 +1278,13 @@ public class BlockHashTests extends BlockHashTestCase {
) {
hash1.add(page, new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ groupIds.incRef();
+ output1.add(new Output(positionOffset, groupIds, null));
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
groupIds.incRef();
output1.add(new Output(positionOffset, groupIds, null));
}
@@ -1294,7 +1302,13 @@ public class BlockHashTests extends BlockHashTestCase {
});
hash2.add(page, new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ groupIds.incRef();
+ output2.add(new Output(positionOffset, groupIds, null));
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
groupIds.incRef();
output2.add(new Output(positionOffset, groupIds, null));
}
@@ -1380,7 +1394,12 @@ public class BlockHashTests extends BlockHashTestCase {
Holder ords1 = new Holder<>();
hash1.add(page, new GroupingAggregatorFunction.AddInput() {
@Override
- public void add(int positionOffset, IntBlock groupIds) {
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ throw new AssertionError("time-series block hash should emit a vector");
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
throw new AssertionError("time-series block hash should emit a vector");
}
@@ -1397,8 +1416,7 @@ public class BlockHashTests extends BlockHashTestCase {
});
Holder ords2 = new Holder<>();
hash2.add(page, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
// TODO: check why PackedValuesBlockHash doesn't emit a vector?
IntVector vector = groupIds.asVector();
assertNotNull("should emit a vector", vector);
@@ -1406,6 +1424,16 @@ public class BlockHashTests extends BlockHashTestCase {
ords2.set(vector);
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
groupIds.incRef();
@@ -1498,8 +1526,7 @@ public class BlockHashTests extends BlockHashTestCase {
static void hash(boolean collectKeys, BlockHash blockHash, Consumer callback, Block... values) {
blockHash.add(new Page(values), new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
OrdsAndKeys result = new OrdsAndKeys(
blockHash.toString(),
positionOffset,
@@ -1532,9 +1559,19 @@ public class BlockHashTests extends BlockHashTestCase {
}
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashWrapper.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashWrapper.java
new file mode 100644
index 000000000000..0c93b6ff111c
--- /dev/null
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/BlockHashWrapper.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+package org.elasticsearch.compute.aggregation.blockhash;
+
+import org.elasticsearch.common.unit.ByteSizeValue;
+import org.elasticsearch.common.util.BigArrays;
+import org.elasticsearch.common.util.BitArray;
+import org.elasticsearch.compute.aggregation.GroupingAggregatorFunction;
+import org.elasticsearch.compute.data.Block;
+import org.elasticsearch.compute.data.BlockFactory;
+import org.elasticsearch.compute.data.IntBlock;
+import org.elasticsearch.compute.data.IntVector;
+import org.elasticsearch.compute.data.Page;
+import org.elasticsearch.core.ReleasableIterator;
+
+/**
+ * A test BlockHash that wraps another one.
+ *
+ * Its methods can be overridden to implement custom behaviours or checks.
+ *
+ */
+public abstract class BlockHashWrapper extends BlockHash {
+ protected BlockHash blockHash;
+
+ public BlockHashWrapper(BlockFactory blockFactory, BlockHash blockHash) {
+ super(blockFactory);
+ this.blockHash = blockHash;
+ }
+
+ @Override
+ public void add(Page page, GroupingAggregatorFunction.AddInput addInput) {
+ blockHash.add(page, addInput);
+ }
+
+ @Override
+ public ReleasableIterator lookup(Page page, ByteSizeValue targetBlockSize) {
+ return blockHash.lookup(page, targetBlockSize);
+ }
+
+ @Override
+ public Block[] getKeys() {
+ return blockHash.getKeys();
+ }
+
+ @Override
+ public IntVector nonEmpty() {
+ return blockHash.nonEmpty();
+ }
+
+ @Override
+ public BitArray seenGroupIds(BigArrays bigArrays) {
+ return blockHash.seenGroupIds(bigArrays);
+ }
+
+ @Override
+ public void close() {
+ blockHash.close();
+ }
+
+ @Override
+ public String toString() {
+ return blockHash.toString();
+ }
+}
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/CategorizeBlockHashTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/CategorizeBlockHashTests.java
index b1319e65e098..842952f9ef8b 100644
--- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/CategorizeBlockHashTests.java
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/aggregation/blockhash/CategorizeBlockHashTests.java
@@ -25,6 +25,8 @@ import org.elasticsearch.compute.data.BlockFactory;
import org.elasticsearch.compute.data.BytesRefBlock;
import org.elasticsearch.compute.data.BytesRefVector;
import org.elasticsearch.compute.data.ElementType;
+import org.elasticsearch.compute.data.IntArrayBlock;
+import org.elasticsearch.compute.data.IntBigArrayBlock;
import org.elasticsearch.compute.data.IntBlock;
import org.elasticsearch.compute.data.IntVector;
import org.elasticsearch.compute.data.LongBlock;
@@ -99,8 +101,7 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
try (var hash = new CategorizeBlockHash(blockFactory, 0, AggregatorMode.SINGLE, analysisRegistry)) {
for (int i = randomInt(2); i < 3; i++) {
hash.add(page, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
assertEquals(groupIds.getPositionCount(), positions);
assertEquals(1, groupIds.getInt(0));
@@ -115,9 +116,19 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
}
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
@@ -162,8 +173,7 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
try (var hash = new CategorizeBlockHash(blockFactory, 0, AggregatorMode.SINGLE, analysisRegistry)) {
for (int i = randomInt(2); i < 3; i++) {
hash.add(page, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
assertEquals(groupIds.getPositionCount(), positions);
assertThat(groupIds.getFirstValueIndex(0), equalTo(0));
@@ -185,9 +195,19 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
}
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
@@ -243,8 +263,7 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
BlockHash rawHash2 = new CategorizeBlockHash(blockFactory, 0, AggregatorMode.INITIAL, analysisRegistry);
) {
rawHash1.add(page1, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
assertEquals(groupIds.getPositionCount(), positions1);
assertEquals(1, groupIds.getInt(0));
assertEquals(2, groupIds.getInt(1));
@@ -258,9 +277,19 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
}
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
@@ -271,8 +300,7 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
intermediatePage1 = new Page(rawHash1.getKeys()[0]);
rawHash2.add(page2, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
assertEquals(groupIds.getPositionCount(), positions2);
assertEquals(1, groupIds.getInt(0));
assertEquals(2, groupIds.getInt(1));
@@ -281,9 +309,19 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
assertEquals(3, groupIds.getInt(4));
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
@@ -299,8 +337,7 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
try (var intermediateHash = new CategorizeBlockHash(blockFactory, 0, AggregatorMode.FINAL, null)) {
intermediateHash.add(intermediatePage1, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
List values = IntStream.range(0, groupIds.getPositionCount())
.map(groupIds::getInt)
.boxed()
@@ -312,9 +349,19 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
}
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
@@ -325,8 +372,7 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
for (int i = randomInt(2); i < 3; i++) {
intermediateHash.add(intermediatePage2, new GroupingAggregatorFunction.AddInput() {
- @Override
- public void add(int positionOffset, IntBlock groupIds) {
+ private void addBlock(int positionOffset, IntBlock groupIds) {
List values = IntStream.range(0, groupIds.getPositionCount())
.map(groupIds::getInt)
.boxed()
@@ -336,9 +382,19 @@ public class CategorizeBlockHashTests extends BlockHashTestCase {
assertEquals(List.of(3, 1, 4), values);
}
+ @Override
+ public void add(int positionOffset, IntArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
+ @Override
+ public void add(int positionOffset, IntBigArrayBlock groupIds) {
+ addBlock(positionOffset, groupIds);
+ }
+
@Override
public void add(int positionOffset, IntVector groupIds) {
- add(positionOffset, groupIds.asBlock());
+ addBlock(positionOffset, groupIds.asBlock());
}
@Override
diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockTypeRandomizer.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockTypeRandomizer.java
new file mode 100644
index 000000000000..9640cbb2b44e
--- /dev/null
+++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/BlockTypeRandomizer.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+package org.elasticsearch.compute.data;
+
+import org.elasticsearch.compute.test.TestBlockFactory;
+
+import java.util.BitSet;
+
+import static org.elasticsearch.test.ESTestCase.randomIntBetween;
+
+public class BlockTypeRandomizer {
+ private BlockTypeRandomizer() {}
+
+ /**
+ * Returns a block with the same contents, but with a randomized type (Constant, vector, big-array...).
+ *
+ * The new block uses a non-breaking block builder, and doesn't increment the circuit breaking.
+ * This is done to avoid randomly using more memory in tests that expect a deterministic memory usage.
+ *
+ */
+ public static IntBlock randomizeBlockType(IntBlock block) {
+ // Just to track the randomization
+ int classCount = 4;
+
+ BlockFactory blockFactory = TestBlockFactory.getNonBreakingInstance();
+
+ //
+ // ConstantNullBlock. It requires all positions to be null
+ //
+ if (randomIntBetween(0, --classCount) == 0 && block.areAllValuesNull()) {
+ if (block instanceof ConstantNullBlock) {
+ return block;
+ }
+ return new ConstantNullBlock(block.getPositionCount(), blockFactory);
+ }
+
+ //
+ // IntVectorBlock. It doesn't allow nulls or multivalues
+ //
+ if (randomIntBetween(0, --classCount) == 0 && block.doesHaveMultivaluedFields() == false && block.mayHaveNulls() == false) {
+ if (block instanceof IntVectorBlock) {
+ return block;
+ }
+
+ int[] values = new int[block.getPositionCount()];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = block.getInt(i);
+ }
+
+ return new IntVectorBlock(new IntArrayVector(values, block.getPositionCount(), blockFactory));
+ }
+
+ // Both IntArrayBlock and IntBigArrayBlock need a nullsBitSet and a firstValueIndexes int[]
+ int[] firstValueIndexes = new int[block.getPositionCount() + 1];
+ BitSet nullsMask = new BitSet(block.getPositionCount());
+ for (int i = 0; i < block.getPositionCount(); i++) {
+ firstValueIndexes[i] = block.getFirstValueIndex(i);
+
+ if (block.isNull(i)) {
+ nullsMask.set(i);
+ }
+ }
+ int totalValues = block.getFirstValueIndex(block.getPositionCount() - 1) + block.getValueCount(block.getPositionCount() - 1);
+ firstValueIndexes[firstValueIndexes.length - 1] = totalValues;
+
+ //
+ // IntArrayBlock
+ //
+ if (randomIntBetween(0, --classCount) == 0) {
+ if (block instanceof IntArrayBlock) {
+ return block;
+ }
+
+ int[] values = new int[totalValues];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = block.getInt(i);
+ }
+
+ return new IntArrayBlock(values, block.getPositionCount(), firstValueIndexes, nullsMask, block.mvOrdering(), blockFactory);
+ }
+ assert classCount == 1;
+
+ //
+ // IntBigArrayBlock
+ //
+ if (block instanceof IntBigArrayBlock) {
+ return block;
+ }
+
+ var intArray = blockFactory.bigArrays().newIntArray(totalValues);
+ for (int i = 0; i < block.getPositionCount(); i++) {
+ intArray.set(i, block.getInt(i));
+ }
+
+ return new IntBigArrayBlock(intArray, block.getPositionCount(), firstValueIndexes, nullsMask, block.mvOrdering(), blockFactory);
+ }
+}