Skip to content

Commit acbdea2

Browse files
committed
Add DENSE_VECTOR type switches
1 parent 26a8753 commit acbdea2

File tree

6 files changed

+11
-0
lines changed

6 files changed

+11
-0
lines changed

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/lookup/QueryList.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.elasticsearch.compute.data.Block;
2020
import org.elasticsearch.compute.data.BooleanBlock;
2121
import org.elasticsearch.compute.data.BytesRefBlock;
22+
import org.elasticsearch.compute.data.DenseVectorBlock;
2223
import org.elasticsearch.compute.data.DoubleBlock;
2324
import org.elasticsearch.compute.data.ElementType;
2425
import org.elasticsearch.compute.data.FloatBlock;
@@ -194,6 +195,10 @@ public static QueryList rawTermQueryList(
194195
case DOC -> throw new IllegalArgumentException("can't read values from [doc] block");
195196
case COMPOSITE -> throw new IllegalArgumentException("can't read values from [composite] block");
196197
case AGGREGATE_METRIC_DOUBLE -> throw new IllegalArgumentException("can't read values from [aggregate metric double] block");
198+
case DENSE_VECTOR -> {
199+
DenseVectorBlock intBlock = (DenseVectorBlock) block;
200+
yield intBlock::getDenseVector;
201+
}
197202
case UNKNOWN -> throw new IllegalArgumentException("can't read values from [" + block + "]");
198203
};
199204
return new TermQueryList(field, searchExecutionContext, aliasFilter, block, null, blockToJavaObject);

x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/VectorBuilderTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ private Vector.Builder vectorBuilder(int estimatedSize, BlockFactory blockFactor
125125
case DOUBLE -> blockFactory.newDoubleVectorBuilder(estimatedSize);
126126
case INT -> blockFactory.newIntVectorBuilder(estimatedSize);
127127
case LONG -> blockFactory.newLongVectorBuilder(estimatedSize);
128+
case DENSE_VECTOR -> blockFactory.newDenseVectorVectorBuilder(estimatedSize, 10);
128129
};
129130
}
130131

x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/data/VectorFixedBuilderTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ private Vector.Builder vectorBuilder(int size, BlockFactory blockFactory) {
124124
case FLOAT -> blockFactory.newFloatVectorFixedBuilder(size);
125125
case INT -> blockFactory.newIntVectorFixedBuilder(size);
126126
case LONG -> blockFactory.newLongVectorFixedBuilder(size);
127+
case DENSE_VECTOR -> blockFactory.newDenseVectorVectorFixedBuilder(10, size);
127128
};
128129
}
129130

x-pack/plugin/esql/compute/test/src/main/java/org/elasticsearch/compute/test/BlockTestUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import static org.elasticsearch.compute.data.BlockUtils.toJavaObject;
3737
import static org.elasticsearch.test.ESTestCase.between;
38+
import static org.elasticsearch.test.ESTestCase.randomArray;
3839
import static org.elasticsearch.test.ESTestCase.randomBoolean;
3940
import static org.elasticsearch.test.ESTestCase.randomDouble;
4041
import static org.elasticsearch.test.ESTestCase.randomFloat;
@@ -71,6 +72,7 @@ public static Object randomValue(ElementType e) {
7172
);
7273
case NULL -> null;
7374
case COMPOSITE -> throw new IllegalArgumentException("can't make random values for composite");
75+
case DENSE_VECTOR -> randomArray(10, 10, Float[]::new, () -> randomFloat());
7476
case UNKNOWN -> throw new IllegalArgumentException("can't make random values for [" + e + "]");
7577
};
7678
}

x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/CsvTestUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,7 @@ public static Type asType(ElementType elementType, Type actualType) {
593593
case DOC -> throw new IllegalArgumentException("can't assert on doc blocks");
594594
case COMPOSITE -> throw new IllegalArgumentException("can't assert on composite blocks");
595595
case AGGREGATE_METRIC_DOUBLE -> AGGREGATE_METRIC_DOUBLE;
596+
case DENSE_VECTOR -> DENSE_VECTOR;
596597
case UNKNOWN -> throw new IllegalArgumentException("Unknown block types cannot be handled");
597598
};
598599
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/AggregateMapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ private static DataType toDataType(ElementType elementType) {
109109
case INT -> DataType.INTEGER;
110110
case LONG -> DataType.LONG;
111111
case DOUBLE -> DataType.DOUBLE;
112+
case DENSE_VECTOR -> DataType.DENSE_VECTOR;
112113
case FLOAT, NULL, DOC, COMPOSITE, AGGREGATE_METRIC_DOUBLE, UNKNOWN -> throw new EsqlIllegalArgumentException(
113114
"unsupported agg type: " + elementType
114115
);

0 commit comments

Comments
 (0)