Skip to content

Commit 85e2426

Browse files
committed
Test non-null args
1 parent 597741d commit 85e2426

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/vector/VectorSimilarityFunctionsIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public VectorSimilarityFunctionsIT(
5353
}
5454

5555
@SuppressWarnings("unchecked")
56-
public void testCosineSimilarityBetweenVectors() {
56+
public void testSimilarityBetweenVectors() {
5757
var query = String.format(Locale.ROOT, """
5858
FROM test
5959
| EVAL similarity = %s(left_vector, right_vector)
@@ -75,7 +75,7 @@ public void testCosineSimilarityBetweenVectors() {
7575
}
7676

7777
@SuppressWarnings("unchecked")
78-
public void testCosineSimilarityBetweenConstantVectorAndField() {
78+
public void testSimilarityBetweenConstantVectorAndField() {
7979
var randomVector = randomVectorArray();
8080
var query = String.format(Locale.ROOT, """
8181
FROM test
@@ -97,7 +97,7 @@ public void testCosineSimilarityBetweenConstantVectorAndField() {
9797
}
9898

9999
@SuppressWarnings("unchecked")
100-
public void testCosineSimilarityBetweenConstantVectors() {
100+
public void testSimilarityBetweenConstantVectors() {
101101
var vectorLeft = randomVectorArray();
102102
var vectorRight = randomVectorArray();
103103
var query = String.format(Locale.ROOT, """

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/vector/VectorSimilarityFunction.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.elasticsearch.compute.operator.DriverContext;
1616
import org.elasticsearch.compute.operator.EvalOperator;
1717
import org.elasticsearch.xpack.esql.core.expression.Expression;
18+
import org.elasticsearch.xpack.esql.core.expression.TypeResolutions;
1819
import org.elasticsearch.xpack.esql.core.tree.Source;
1920
import org.elasticsearch.xpack.esql.core.type.DataType;
2021
import org.elasticsearch.xpack.esql.expression.function.scalar.EsqlScalarFunction;
@@ -23,6 +24,7 @@
2324
import java.util.List;
2425

2526
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.FIRST;
27+
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.ParamOrdinal.SECOND;
2628
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isNotNull;
2729
import static org.elasticsearch.xpack.esql.core.expression.TypeResolutions.isType;
2830
import static org.elasticsearch.xpack.esql.core.type.DataType.DENSE_VECTOR;
@@ -59,11 +61,11 @@ protected TypeResolution resolveType() {
5961
return new TypeResolution("Unresolved children");
6062
}
6163

62-
return checkDenseVectorParam(left()).and(checkDenseVectorParam(right()));
64+
return checkDenseVectorParam(left(), FIRST).and(checkDenseVectorParam(right(), SECOND));
6365
}
6466

65-
private TypeResolution checkDenseVectorParam(Expression param) {
66-
return isNotNull(param, sourceText(), FIRST).and(isType(param, dt -> dt == DENSE_VECTOR, sourceText(), FIRST, "dense_vector"));
67+
private TypeResolution checkDenseVectorParam(Expression param, TypeResolutions.ParamOrdinal paramOrdinal) {
68+
return isNotNull(param, sourceText(), paramOrdinal).and(isType(param, dt -> dt == DENSE_VECTOR, sourceText(), paramOrdinal, "dense_vector"));
6769
}
6870

6971
@Override

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2236,6 +2236,20 @@ private void checkFullTextFunctionsInStats(String functionInvocation) {
22362236
);
22372237
}
22382238

2239+
public void testVectorSimilarityFunctionsNullArgs() throws Exception {
2240+
if (EsqlCapabilities.Cap.COSINE_VECTOR_SIMILARITY_FUNCTION.isEnabled()) {
2241+
checkVectorSimilarityFunctionsNullArgs("v_cosine_similarity(null, vector)", "first");
2242+
checkVectorSimilarityFunctionsNullArgs("v_cosine_similarity(vector, null)", "second");
2243+
}
2244+
}
2245+
2246+
private void checkVectorSimilarityFunctionsNullArgs(String functionInvocation, String argOrdinal) throws Exception {
2247+
assertThat(
2248+
error("from test | eval similarity = " + functionInvocation, fullTextAnalyzer),
2249+
containsString(argOrdinal + " argument of [" + functionInvocation + "] cannot be null, received [null]")
2250+
);
2251+
}
2252+
22392253
private void query(String query) {
22402254
query(query, defaultAnalyzer);
22412255
}

0 commit comments

Comments
 (0)