Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.elasticsearch.index.mapper.DateFieldMapper;
import org.elasticsearch.index.mapper.extras.MapperExtrasPlugin;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.shard.IndexShard;
Expand Down Expand Up @@ -150,11 +151,24 @@ public void testRow() {

public void testRowWithFilter() {
long value = randomLongBetween(0, Long.MAX_VALUE);
try (EsqlQueryResponse response = run(syncEsqlQueryRequest().query("row " + value).filter(new BoolQueryBuilder().boost(1.0f)))) {
try (EsqlQueryResponse response = run(syncEsqlQueryRequest().query("ROW " + value).filter(randomQueryFilter()))) {
assertEquals(List.of(List.of(value)), getValuesList(response));
}
}

public void testInvalidRowWithFilter() {
long value = randomLongBetween(0, Long.MAX_VALUE);
expectThrows(
VerificationException.class,
containsString("Unknown column [x]"),
() -> run(syncEsqlQueryRequest().query("ROW " + value + " | EVAL x==NULL").filter(randomQueryFilter()))
);
}

private static QueryBuilder randomQueryFilter() {
return randomFrom(new MatchAllQueryBuilder(), new BoolQueryBuilder().boost(1.0f));
}

public void testFromStatsGroupingAvgWithSort() {
testFromStatsGroupingAvgImpl("from test | stats avg(count) by data | sort data | limit 2", "data", "avg(count)");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,9 @@ static void updateExecutionInfoWithClustersWithNoMatchingIndices(
IndexResolution indexResolution,
boolean usedFilter
) {
if (executionInfo.clusterInfo.isEmpty()) {
return;
}
// Get the clusters which are still running, and we will check whether they have any matching indices.
// NOTE: we assume that updateExecutionInfoWithUnavailableClusters() was already run and took care of unavailable clusters.
final Set<String> clustersWithNoMatchingIndices = executionInfo.getClusterStates(Cluster.Status.RUNNING)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -595,9 +595,7 @@ private static void analyzeAndMaybeRetry(
if (result.indices.isValid() || requestFilter != null) {
// We won't run this check with no filter and no valid indices since this may lead to false positive - missing index report
// when the resolution result is not valid for a different reason.
if (executionInfo.clusterInfo.isEmpty() == false) {
EsqlCCSUtils.updateExecutionInfoWithClustersWithNoMatchingIndices(executionInfo, result.indices, requestFilter != null);
}
EsqlCCSUtils.updateExecutionInfoWithClustersWithNoMatchingIndices(executionInfo, result.indices, requestFilter != null);
}
plan = analyzeAction.apply(result);
} catch (Exception e) {
Expand Down