diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java index 00d30066899ae..3de91d5636023 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java @@ -23,7 +23,6 @@ import org.elasticsearch.core.TimeValue; import org.elasticsearch.core.Tuple; import org.elasticsearch.health.node.selection.HealthNode; -import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.indices.breaker.HierarchyCircuitBreakerService; import org.elasticsearch.plugins.Plugin; @@ -43,6 +42,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.equalTo; @@ -166,33 +166,10 @@ protected void setRequestCircuitBreakerLimit(ByteSizeValue limit) { } protected final EsqlQueryResponse run(String esqlCommands) { - return run(esqlCommands, randomPragmas()); + return run(syncEsqlQueryRequest().query(esqlCommands).pragmas(randomPragmas())); } - protected final EsqlQueryResponse run(String esqlCommands, QueryPragmas pragmas) { - return run(esqlCommands, pragmas, null); - } - - protected EsqlQueryResponse run(String esqlCommands, QueryPragmas pragmas, QueryBuilder filter) { - return run(esqlCommands, pragmas, filter, null); - } - - protected EsqlQueryResponse run(String esqlCommands, QueryPragmas pragmas, QueryBuilder filter, Boolean allowPartialResults) { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(esqlCommands); - if (pragmas != null) { - request.pragmas(pragmas); - } - if (filter != null) { - request.filter(filter); - } - if (allowPartialResults != null) { - request.allowPartialResults(allowPartialResults); - } - return run(request); - } - - protected EsqlQueryResponse run(EsqlQueryRequest request) { + public EsqlQueryResponse run(EsqlQueryRequest request) { try { return client().execute(EsqlQueryAction.INSTANCE, request).actionGet(30, TimeUnit.SECONDS); } catch (ElasticsearchTimeoutException e) { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java index 19157b636dffc..3c37f0ffbcc1d 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java @@ -127,7 +127,7 @@ protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) { } @Override - protected EsqlQueryResponse run(EsqlQueryRequest request) { + public EsqlQueryResponse run(EsqlQueryRequest request) { final Client client; if (randomBoolean()) { client = client(randomFrom(clusterService().state().nodes().getCoordinatingOnlyNodes().values()).getName()); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java index ef4a2c1e00369..7a2cccdf680b3 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java @@ -112,7 +112,7 @@ private EsqlQueryResponse runWithBreaking(EsqlQueryRequest request) throws Circu } @Override - protected EsqlQueryResponse run(EsqlQueryRequest request) { + public EsqlQueryResponse run(EsqlQueryRequest request) { if (randomBoolean()) { request.allowPartialResults(randomBoolean()); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java index 9d57c46fa1f29..1ea6c7014c6d5 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java @@ -86,6 +86,7 @@ import static org.elasticsearch.test.MapMatcher.assertMap; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.contains; @@ -1916,7 +1917,7 @@ public void testScriptField() throws Exception { pragmaSettings.put("data_partitioning", "doc"); pragmas = new QueryPragmas(pragmaSettings.build()); } - try (EsqlQueryResponse resp = run("FROM test-script | SORT k1 | LIMIT " + numDocs, pragmas)) { + try (EsqlQueryResponse resp = run(syncEsqlQueryRequest().query("FROM test-script | SORT k1 | LIMIT " + numDocs).pragmas(pragmas))) { List k1Column = Iterators.toList(resp.column(0)); assertThat(k1Column, equalTo(LongStream.range(0L, numDocs).boxed().toList())); List k2Column = Iterators.toList(resp.column(1)); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java index 862adadd1f105..1eb86b64c4b90 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java @@ -17,14 +17,12 @@ import org.elasticsearch.compute.data.Page; import org.elasticsearch.compute.test.TestBlockFactory; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.xpack.core.LocalStateCompositeXPackPlugin; import org.elasticsearch.xpack.core.async.DeleteAsyncResultRequest; import org.elasticsearch.xpack.core.async.GetAsyncResultRequest; import org.elasticsearch.xpack.core.async.TransportDeleteAsyncResultAction; import org.elasticsearch.xpack.core.esql.action.ColumnInfo; -import org.elasticsearch.xpack.esql.plugin.QueryPragmas; import java.nio.file.Path; import java.util.ArrayList; @@ -52,18 +50,18 @@ protected Collection> nodePlugins() { } @Override - protected EsqlQueryResponse run(String esqlCommands, QueryPragmas pragmas, QueryBuilder filter) { + public EsqlQueryResponse run(EsqlQueryRequest original) { EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(); - request.query(esqlCommands); - request.pragmas(pragmas); + request.query(original.query()); + request.pragmas(original.pragmas()); // deliberately small timeout, to frequently trigger incomplete response request.waitForCompletionTimeout(TimeValue.timeValueNanos(1)); request.keepOnCompletion(randomBoolean()); - if (filter != null) { - request.filter(filter); + if (original.filter() != null) { + request.filter(original.filter()); } - var response = run(request); + var response = super.run(request); if (response.asyncExecutionId().isPresent()) { List initialColumns = null; List initialPages = null; diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlDisruptionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlDisruptionIT.java index f26717c5674e1..f03b475d09781 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlDisruptionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlDisruptionIT.java @@ -68,7 +68,7 @@ protected Collection> nodePlugins() { } @Override - protected EsqlQueryResponse run(EsqlQueryRequest request) { + public EsqlQueryResponse run(EsqlQueryRequest request) { // IndexResolver currently ignores failures from field-caps responses and can resolve to a smaller set of concrete indices. boolean singleIndex = request.query().startsWith("from test |"); if (singleIndex && randomIntBetween(0, 100) <= 20) { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java index 08d59eade600e..e74c47b9f71d9 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java @@ -45,6 +45,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.lessThanOrEqualTo; @@ -116,7 +117,11 @@ public void testConcurrentQueries() throws Exception { .put("task_concurrency", between(1, 2)) .put("exchange_concurrent_clients", between(1, 2)); } - try (var response = run("from test-* | stats count(user) by tags", new QueryPragmas(pragmas.build()))) { + try ( + var response = run( + syncEsqlQueryRequest().query("from test-* | stats count(user) by tags").pragmas(new QueryPragmas(pragmas.build())) + ) + ) { // do nothing } catch (Exception | AssertionError e) { logger.warn("Query failed with exception", e); @@ -250,7 +255,7 @@ public void testLimitConcurrentShards() { mockSearchService.setOnPutContext(r -> counter.onNewContext()); mockSearchService.setOnRemoveContext(r -> counter.onContextReleased()); } - run(q, pragmas).close(); + run(syncEsqlQueryRequest().query(q).pragmas(pragmas)).close(); } } finally { for (SearchService searchService : searchServices) { @@ -277,7 +282,7 @@ public void testCancelUnnecessaryRequests() { connection.sendRequest(requestId, action, request, options); }); - var query = EsqlQueryRequest.syncEsqlQueryRequest(); + var query = syncEsqlQueryRequest(); query.query("from test-* | LIMIT 1"); query.pragmas(new QueryPragmas(Settings.builder().put(QueryPragmas.MAX_CONCURRENT_NODES_PER_CLUSTER.getKey(), 1).build())); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java index 150d617bb4e29..006e1922afeed 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java @@ -17,6 +17,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.hasSize; public class TimeBasedIndicesIT extends AbstractEsqlIntegTestCase { @@ -39,7 +40,7 @@ public void testFilter() { { String query = "FROM test | limit 1000"; var filter = new RangeQueryBuilder("@timestamp").from(epoch - TimeValue.timeValueHours(3).millis()).to("now"); - try (var resp = run(query, null, filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).filter(filter))) { List> values = getValuesList(resp); assertThat(values, hasSize(oldDocs)); } @@ -47,7 +48,7 @@ public void testFilter() { { String query = "FROM test | limit 1000"; var filter = new RangeQueryBuilder("@timestamp").from("now").to(epoch + TimeValue.timeValueHours(3).millis()); - try (var resp = run(query, null, filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).filter(filter))) { List> values = getValuesList(resp); assertThat(values, hasSize(newDocs)); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeSeriesIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeSeriesIT.java index 09e04bfaa742a..cfc8979360578 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeSeriesIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeSeriesIT.java @@ -36,7 +36,7 @@ public class TimeSeriesIT extends AbstractEsqlIntegTestCase { @Override - protected EsqlQueryResponse run(EsqlQueryRequest request) { + public EsqlQueryResponse run(EsqlQueryRequest request) { assumeTrue("time series available in snapshot builds only", Build.current().isSnapshot()); return super.run(request); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java index 6d8757c7b080e..e1ef6730c1f05 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java @@ -32,6 +32,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.as; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.equalTo; @@ -82,7 +83,13 @@ public void testCanMatch() { } ); } - try (EsqlQueryResponse resp = run("from events_*", randomPragmas(), new RangeQueryBuilder("@timestamp").gte("2023-01-01"))) { + try ( + EsqlQueryResponse resp = run( + syncEsqlQueryRequest().query("from events_*") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("@timestamp").gte("2023-01-01")) + ) + ) { assertThat(getValuesList(resp), hasSize(4)); assertThat(queriedIndices, equalTo(Set.of("events_2023"))); queriedIndices.clear(); @@ -93,7 +100,13 @@ public void testCanMatch() { queriedIndices.clear(); } - try (EsqlQueryResponse resp = run("from events_*", randomPragmas(), new RangeQueryBuilder("@timestamp").lt("2023-01-01"))) { + try ( + EsqlQueryResponse resp = run( + syncEsqlQueryRequest().query("from events_*") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("@timestamp").lt("2023-01-01")) + ) + ) { assertThat(getValuesList(resp), hasSize(3)); assertThat(queriedIndices, equalTo(Set.of("events_2022"))); queriedIndices.clear(); @@ -106,9 +119,9 @@ public void testCanMatch() { try ( EsqlQueryResponse resp = run( - "from events_*", - randomPragmas(), - new RangeQueryBuilder("@timestamp").gt("2022-01-01").lt("2023-12-31") + syncEsqlQueryRequest().query("from events_*") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("@timestamp").gt("2022-01-01").lt("2023-12-31")) ) ) { assertThat(getValuesList(resp), hasSize(7)); @@ -129,9 +142,9 @@ public void testCanMatch() { try ( EsqlQueryResponse resp = run( - "from events_*", - randomPragmas(), - new RangeQueryBuilder("@timestamp").gt("2021-01-01").lt("2021-12-31") + syncEsqlQueryRequest().query("from events_*") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("@timestamp").gt("2021-01-01").lt("2021-12-31")) ) ) { assertThat(getValuesList(resp), hasSize(0)); @@ -181,62 +194,110 @@ public void testAliasFilters() { .addAlias("employees", "sales", new MatchQueryBuilder("dept", "sales")) ); // employees index - try (var resp = run("from employees | stats count(emp_no)", randomPragmas())) { + try (var resp = run("from employees | stats count(emp_no)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(6L))); } - try (var resp = run("from employees | stats avg(salary)", randomPragmas())) { + try (var resp = run("from employees | stats avg(salary)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(26.95d))); } - try (var resp = run("from employees | stats count(emp_no)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from employees | stats count(emp_no)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(4L))); } - try (var resp = run("from employees | stats avg(salary)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from employees | stats avg(salary)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(26.65d))); } // match both employees index and engineers alias -> employees - try (var resp = run("from e* | stats count(emp_no)", randomPragmas())) { + try (var resp = run("from e* | stats count(emp_no)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(6L))); } - try (var resp = run("from employees | stats avg(salary)", randomPragmas())) { + try (var resp = run("from employees | stats avg(salary)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(26.95d))); } - try (var resp = run("from e* | stats count(emp_no)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from e* | stats count(emp_no)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(4L))); } - try (var resp = run("from e* | stats avg(salary)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from e* | stats avg(salary)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(26.65d))); } // engineers alias - try (var resp = run("from engineer* | stats count(emp_no)", randomPragmas())) { + try (var resp = run("from engineer* | stats count(emp_no)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(4L))); } - try (var resp = run("from engineer* | stats avg(salary)", randomPragmas())) { + try (var resp = run("from engineer* | stats avg(salary)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(26.65d))); } - try (var resp = run("from engineer* | stats count(emp_no)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from engineer* | stats count(emp_no)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(3L))); } - try (var resp = run("from engineer* | stats avg(salary)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from engineer* | stats avg(salary)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(27.2d))); } // sales alias - try (var resp = run("from sales | stats count(emp_no)", randomPragmas())) { + try (var resp = run("from sales | stats count(emp_no)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(2L))); } - try (var resp = run("from sales | stats avg(salary)", randomPragmas())) { + try (var resp = run("from sales | stats avg(salary)")) { assertThat(getValuesList(resp).get(0), equalTo(List.of(27.55d))); } - try (var resp = run("from sales | stats count(emp_no)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from sales | stats count(emp_no)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(1L))); } - try (var resp = run("from sales | stats avg(salary)", randomPragmas(), new RangeQueryBuilder("hired").lt("2012-04-30"))) { + try ( + var resp = run( + syncEsqlQueryRequest().query("from sales | stats avg(salary)") + .pragmas(randomPragmas()) + .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) + ) + ) { assertThat(getValuesList(resp).get(0), equalTo(List.of(25.0d))); } } @@ -297,7 +358,11 @@ public void testFailOnUnavailableShards() throws Exception { containsString("index [logs] has no active shard copy"), () -> run("from * | KEEP timestamp,message") ); - try (EsqlQueryResponse resp = run("from events,logs | KEEP timestamp,message", null, null, true)) { + try ( + EsqlQueryResponse resp = run( + syncEsqlQueryRequest().query("from events,logs | KEEP timestamp,message").allowPartialResults(true) + ) + ) { assertThat(getValuesList(resp), hasSize(3)); } } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java index 28df30e6d0841..5a87a4b4302c4 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java @@ -22,6 +22,7 @@ import static org.elasticsearch.index.query.QueryBuilders.boolQuery; import static org.elasticsearch.index.query.QueryBuilders.matchQuery; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.CoreMatchers.containsString; //@TestLogging(value = "org.elasticsearch.xpack.esql:TRACE,org.elasticsearch.compute:TRACE", reason = "debug") @@ -137,7 +138,7 @@ public void testWhereMatchWithScoring_AndRequestFilter() { QueryBuilder filter = boolQuery().must(matchQuery("content", "brown")); - try (var resp = run(query, randomPragmas(), filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -160,7 +161,7 @@ public void testWhereMatchWithScoring_AndNoScoreRequestFilter() { QueryBuilder filter = boolQuery().filter(matchQuery("content", "brown")); - try (var resp = run(query, randomPragmas(), filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -183,7 +184,7 @@ public void testWhereMatchWithScoring_And_MatchAllRequestFilter() { QueryBuilder filter = QueryBuilders.matchAllQuery(); - try (var resp = run(query, randomPragmas(), filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -205,7 +206,7 @@ public void testScoringOutsideQuery() { QueryBuilder filter = boolQuery().must(matchQuery("content", "fox")); - try (var resp = run(query, randomPragmas(), filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -227,7 +228,7 @@ public void testScoring_Zero_OutsideQuery() { QueryBuilder filter = boolQuery().filter(matchQuery("content", "fox")); - try (var resp = run(query, randomPragmas(), filter)) { + try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/TermIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/TermIT.java index 75bdc701703e2..9afefca5eed6e 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/TermIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/TermIT.java @@ -30,7 +30,7 @@ public void setupIndex() { } @Override - protected EsqlQueryResponse run(EsqlQueryRequest request) { + public EsqlQueryResponse run(EsqlQueryRequest request) { assumeTrue("term function capability not available", EsqlCapabilities.Cap.TERM_FUNCTION.isEnabled()); return super.run(request); } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java index d3073d30bfaaf..cb1b9c4cc655d 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java @@ -62,11 +62,11 @@ public class EsqlQueryRequest extends org.elasticsearch.xpack.core.esql.action.E */ private final Map> tables = new TreeMap<>(); - static EsqlQueryRequest syncEsqlQueryRequest() { + public static EsqlQueryRequest syncEsqlQueryRequest() { return new EsqlQueryRequest(false); } - static EsqlQueryRequest asyncEsqlQueryRequest() { + public static EsqlQueryRequest asyncEsqlQueryRequest() { return new EsqlQueryRequest(true); } @@ -104,8 +104,9 @@ public ActionRequestValidationException validate() { public EsqlQueryRequest() {} - public void query(String query) { + public EsqlQueryRequest query(String query) { this.query = query; + return this; } @Override @@ -156,8 +157,9 @@ public Locale locale() { return locale; } - public void filter(QueryBuilder filter) { + public EsqlQueryRequest filter(QueryBuilder filter) { this.filter = filter; + return this; } @Override @@ -165,8 +167,9 @@ public QueryBuilder filter() { return filter; } - public void pragmas(QueryPragmas pragmas) { + public EsqlQueryRequest pragmas(QueryPragmas pragmas) { this.pragmas = pragmas; + return this; } public QueryPragmas pragmas() {