Skip to content

Commit 8e7247a

Browse files
committed
Remove unnecessary converters
1 parent 43c0d9a commit 8e7247a

File tree

7 files changed

+95
-282
lines changed

7 files changed

+95
-282
lines changed

x-pack/plugin/esql/qa/testFixtures/src/main/resources/dense_vector.csv-spec

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,16 @@ row doubles = [123.4, 567.8, 901.2]
8888
vector:dense_vector
8989
[123.4, 567.8, 901.2]
9090
;
91+
92+
convertHexStringToDenseVector
93+
required_capability: dense_vector_field_type
94+
required_capability: to_dense_vector_function
95+
96+
row hex_str = "0102030405060708090a0b0c0d0e0f"
97+
| eval vector = to_dense_vector(hex_str)
98+
| keep vector
99+
;
100+
101+
vector:dense_vector
102+
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0]
103+
;

x-pack/plugin/esql/qa/testFixtures/src/main/resources/knn-function.csv-spec

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,3 +327,28 @@ navy | [0.0, 0.0, 128.0]
327327
gray | [128.0, 128.0, 128.0]
328328
chartreuse | [127.0, 255.0, 0.0]
329329
;
330+
331+
knnWithHexStringCasting
332+
required_capability: knn_function_v3
333+
required_capability: to_dense_vector_function
334+
335+
from colors metadata _score
336+
| eval query = [0, 120, 0]
337+
| where knn(rgb_vector, "007800", 10)
338+
| sort _score desc, color asc
339+
| keep color, rgb_vector
340+
| limit 10
341+
;
342+
343+
color:text | rgb_vector:dense_vector
344+
green | [0.0, 128.0, 0.0]
345+
black | [0.0, 0.0, 0.0]
346+
olive | [128.0, 128.0, 0.0]
347+
teal | [0.0, 128.0, 128.0]
348+
lime | [0.0, 255.0, 0.0]
349+
sienna | [160.0, 82.0, 45.0]
350+
maroon | [128.0, 0.0, 0.0]
351+
navy | [0.0, 0.0, 128.0]
352+
gray | [128.0, 128.0, 128.0]
353+
chartreuse | [127.0, 255.0, 0.0]
354+
;

x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDenseVectorFromBooleanEvaluator.java

Lines changed: 0 additions & 132 deletions
This file was deleted.

x-pack/plugin/esql/src/main/generated/org/elasticsearch/xpack/esql/expression/function/scalar/convert/ToDenseVectorFromStringEvaluator.java

Lines changed: 0 additions & 150 deletions
This file was deleted.

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/AnalyzerTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2352,6 +2352,8 @@ public void testDenseVectorImplicitCastingKnn() {
23522352
assumeTrue("dense_vector capability not available", EsqlCapabilities.Cap.DENSE_VECTOR_FIELD_TYPE.isEnabled());
23532353
assumeTrue("dense_vector capability not available", EsqlCapabilities.Cap.KNN_FUNCTION_V3.isEnabled());
23542354

2355+
checkDenseVectorCastingHexKnn("float_vector");
2356+
checkDenseVectorCastingHexKnn("byte_vector");
23552357
checkDenseVectorCastingKnn("float_vector");
23562358
checkDenseVectorCastingKnn("byte_vector");
23572359
checkDenseVectorEvalCastingKnn("float_vector");
@@ -2371,6 +2373,19 @@ private static void checkDenseVectorCastingKnn(String fieldName) {
23712373
assertThat(queryVector.value(), equalTo(List.of(0.0f, 1.0f, 2.0f)));
23722374
}
23732375

2376+
private static void checkDenseVectorCastingHexKnn(String fieldName) {
2377+
var plan = analyze(String.format(Locale.ROOT, """
2378+
from test | where knn(%s, "000102", 10)
2379+
""", fieldName), "mapping-dense_vector.json");
2380+
2381+
var limit = as(plan, Limit.class);
2382+
var filter = as(limit.child(), Filter.class);
2383+
var knn = as(filter.condition(), Knn.class);
2384+
var queryVector = as(knn.query(), Literal.class);
2385+
assertEquals(DataType.DENSE_VECTOR, queryVector.dataType());
2386+
assertThat(queryVector.value(), equalTo(List.of(0.0f, 1.0f, 2.0f)));
2387+
}
2388+
23742389
private static void checkDenseVectorEvalCastingKnn(String fieldName) {
23752390
var plan = analyze(String.format(Locale.ROOT, """
23762391
from test | eval query = [0, 1, 2] | where knn(%s, query, 10)

0 commit comments

Comments
 (0)