Skip to content

Commit 56d4317

Browse files
committed
First test - default limit
1 parent 887615c commit 56d4317

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.elasticsearch.xpack.esql.core.expression.Expression;
4444
import org.elasticsearch.xpack.esql.core.expression.Expressions;
4545
import org.elasticsearch.xpack.esql.core.expression.FieldAttribute;
46+
import org.elasticsearch.xpack.esql.core.expression.FoldContext;
4647
import org.elasticsearch.xpack.esql.core.expression.Literal;
4748
import org.elasticsearch.xpack.esql.core.expression.NamedExpression;
4849
import org.elasticsearch.xpack.esql.core.expression.ReferenceAttribute;
@@ -2053,6 +2054,24 @@ public void testToDateNanosPushDown() {
20532054
assertThat(expected.toString(), is(esQuery.query().toString()));
20542055
}
20552056

2057+
public void testKnnWithoutExplicitLimit() {
2058+
var query = """
2059+
from test
2060+
| where knn(dense_vector, [0, 1, 2])
2061+
""";
2062+
var analyzer = makeAnalyzer("mapping-all-types.json");
2063+
var plan = plannerOptimizer.plan(query, IS_SV_STATS, analyzer);
2064+
var limitExec = as(plan, LimitExec.class);
2065+
assertThat(limitExec.limit().fold(FoldContext.small()), is(config.resultTruncationDefaultSize()));
2066+
var exchangeExec = as(limitExec.child(), ExchangeExec.class);
2067+
var projectExec = as(exchangeExec.child(), ProjectExec.class);
2068+
var fieldExtractExec = as(projectExec.child(), FieldExtractExec.class);
2069+
var queryExec = as(fieldExtractExec.child(), EsQueryExec.class);
2070+
assertThat(queryExec.limit().fold(FoldContext.small()), is(config.resultTruncationDefaultSize()));
2071+
var knnQuery = as(queryExec.query(), KnnVectorQueryBuilder.class);
2072+
assertThat(knnQuery.k(), is(config.resultTruncationDefaultSize()));
2073+
}
2074+
20562075
private boolean isMultiTypeEsField(Expression e) {
20572076
return e instanceof FieldAttribute fa && fa.field() instanceof MultiTypeEsField;
20582077
}

0 commit comments

Comments
 (0)