Skip to content

Commit 81f84a2

Browse files
committed
Guard knn tests with capability
1 parent 67280fc commit 81f84a2

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,6 +1365,8 @@ public void testMultiMatchOptionsPushDown() {
13651365
}
13661366

13671367
public void testKnnOptionsPushDown() {
1368+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
1369+
13681370
String query = """
13691371
from test
13701372
| where KNN(dense_vector, [0.1, 0.2, 0.3],
@@ -2059,6 +2061,8 @@ public void testToDateNanosPushDown() {
20592061
}
20602062

20612063
public void testKnnWithoutExplicitLimit() {
2064+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2065+
20622066
var query = """
20632067
from test
20642068
| where knn(dense_vector, [0, 1, 2])
@@ -2077,6 +2081,8 @@ public void testKnnWithoutExplicitLimit() {
20772081
}
20782082

20792083
public void testKnnWithoutExplicitLimitSorted() {
2084+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2085+
20802086
var query = """
20812087
from test metadata _score
20822088
| where knn(dense_vector, [0, 1, 2])
@@ -2095,7 +2101,9 @@ public void testKnnWithoutExplicitLimitSorted() {
20952101
assertThat(knnQuery.k(), is(config.resultTruncationDefaultSize()));
20962102
}
20972103

2098-
public void testKnnWithoExplicitLimitSorted() {
2104+
public void testKnnWithExplicitLimitSorted() {
2105+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2106+
20992107
var query = """
21002108
from test metadata _score
21012109
| where knn(dense_vector, [0, 1, 2])
@@ -2115,7 +2123,35 @@ public void testKnnWithoExplicitLimitSorted() {
21152123
assertThat(knnQuery.k(), is(10));
21162124
}
21172125

2118-
public void testKnnWithoExplicitLimitSortedAndCommandsInBetween() {
2126+
public void testKnnWithStatsAndLimit() {
2127+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2128+
2129+
var query = """
2130+
from test metadata _score
2131+
| where knn(dense_vector, [0, 1, 2])
2132+
| sort _score desc
2133+
| limit 500
2134+
| stats c = count(*)
2135+
| limit 10
2136+
""";
2137+
var analyzer = makeAnalyzer("mapping-all-types.json");
2138+
var plan = plannerOptimizer.plan(query, IS_SV_STATS, analyzer);
2139+
var limitExec = as(plan, LimitExec.class);
2140+
assertThat(limitExec.limit().fold(FoldContext.small()), is(10));
2141+
var finalAggExec = as(limitExec.child(), AggregateExec.class);
2142+
var initialAggExec = as(finalAggExec.child(), AggregateExec.class);
2143+
var topNExec = as(initialAggExec.child(), TopNExec.class);
2144+
assertThat(topNExec.limit().fold(FoldContext.small()), is(500));
2145+
var exchangeExec = as(topNExec.child(), ExchangeExec.class);
2146+
var projectExec = as(exchangeExec.child(), ProjectExec.class);
2147+
var esQueryExec = as(projectExec.child(), EsQueryExec.class);
2148+
var expectedQuery = new KnnVectorQueryBuilder("dense_vector", new float[] { 0f, 1f, 2f }, 500, null, null, null);
2149+
assertEquals(expectedQuery.toString(), esQueryExec.query().toString());
2150+
}
2151+
2152+
public void testKnnWithoutExplicitLimitSortedAndCommandsInBetween() {
2153+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2154+
21192155
var query = """
21202156
from test metadata _score
21212157
| where knn(dense_vector, [0, 1, 2])
@@ -2137,6 +2173,8 @@ public void testKnnWithoExplicitLimitSortedAndCommandsInBetween() {
21372173
}
21382174

21392175
public void testKnnWithExplicitLimit() {
2176+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2177+
21402178
var query = """
21412179
from test metadata _score
21422180
| where knn(dense_vector, [0, 1, 2]) or match(text, "blue")
@@ -2163,6 +2201,8 @@ public void testKnnWithExplicitLimit() {
21632201
}
21642202

21652203
public void testKnnWithExplicitLimitAndExistingTopK() {
2204+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2205+
21662206
var query = """
21672207
from test
21682208
| where knn(dense_vector, [0, 1, 2], {"k": 10})
@@ -2182,6 +2222,8 @@ public void testKnnWithExplicitLimitAndExistingTopK() {
21822222
}
21832223

21842224
public void testMultipleKnnQueriesLimit() {
2225+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2226+
21852227
var query = """
21862228
from test
21872229
| where knn(dense_vector, [0, 1, 2]) and (match(text, "example") or knn(dense_vector, [3, 4, 5]))
@@ -2227,9 +2269,12 @@ public void testMultipleKnnQueriesLimit() {
22272269
}
22282270

22292271
public void testKnnWithCombinedLimits() {
2272+
assumeTrue("KNN should be enabled", EsqlCapabilities.Cap.KNN_FUNCTION.isEnabled());
2273+
22302274
var query = """
22312275
from test
22322276
| where knn(dense_vector, [0, 1, 2])
2277+
| limit 30
22332278
| limit 20
22342279
| limit 10
22352280
""";
@@ -2250,6 +2295,7 @@ public void testKnnWithCombinedLimits() {
22502295
| where knn(dense_vector, [0, 1, 2])
22512296
| limit 10
22522297
| limit 20
2298+
| limit 30
22532299
""";
22542300
analyzer = makeAnalyzer("mapping-all-types.json");
22552301
plan = plannerOptimizer.plan(query, IS_SV_STATS, analyzer);

0 commit comments

Comments
 (0)