Skip to content

Commit 3f3c532

Browse files
authored
Merge branch 'main' into low_memory_prefetch
2 parents 054e7e0 + e876dc0 commit 3f3c532

File tree

51 files changed

+325
-137
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+325
-137
lines changed

benchmarks/src/main/java/org/elasticsearch/benchmark/_nightly/esql/QueryPlanningBenchmark.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ public void setup() {
9292
var fields = 10_000;
9393
var mapping = LinkedHashMap.<String, EsField>newLinkedHashMap(fields);
9494
for (int i = 0; i < fields; i++) {
95-
mapping.put("field" + i, new EsField("field-" + i, TEXT, emptyMap(), true));
95+
// We're creating a standard index, so none of these fields should be marked as dimensions.
96+
mapping.put("field" + i, new EsField("field-" + i, TEXT, emptyMap(), true, EsField.TimeSeriesFieldType.NONE));
9697
}
9798

9899
var esIndex = new EsIndex("test", mapping, Map.of("test", IndexMode.STANDARD));

benchmarks/src/main/java/org/elasticsearch/benchmark/compute/operator/EvalBenchmark.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ private static EvalOperator.ExpressionEvaluator evaluator(String operation) {
212212
FieldAttribute timestamp = new FieldAttribute(
213213
Source.EMPTY,
214214
"timestamp",
215-
new EsField("timestamp", DataType.DATETIME, Map.of(), true)
215+
new EsField("timestamp", DataType.DATETIME, Map.of(), true, EsField.TimeSeriesFieldType.NONE)
216216
);
217217
yield EvalMapper.toEvaluator(
218218
FOLD_CONTEXT,
@@ -321,19 +321,35 @@ private static EvalOperator.ExpressionEvaluator evaluator(String operation) {
321321
}
322322

323323
private static FieldAttribute longField() {
324-
return new FieldAttribute(Source.EMPTY, "long", new EsField("long", DataType.LONG, Map.of(), true));
324+
return new FieldAttribute(
325+
Source.EMPTY,
326+
"long",
327+
new EsField("long", DataType.LONG, Map.of(), true, EsField.TimeSeriesFieldType.NONE)
328+
);
325329
}
326330

327331
private static FieldAttribute doubleField() {
328-
return new FieldAttribute(Source.EMPTY, "double", new EsField("double", DataType.DOUBLE, Map.of(), true));
332+
return new FieldAttribute(
333+
Source.EMPTY,
334+
"double",
335+
new EsField("double", DataType.DOUBLE, Map.of(), true, EsField.TimeSeriesFieldType.NONE)
336+
);
329337
}
330338

331339
private static FieldAttribute intField() {
332-
return new FieldAttribute(Source.EMPTY, "int", new EsField("int", DataType.INTEGER, Map.of(), true));
340+
return new FieldAttribute(
341+
Source.EMPTY,
342+
"int",
343+
new EsField("int", DataType.INTEGER, Map.of(), true, EsField.TimeSeriesFieldType.NONE)
344+
);
333345
}
334346

335347
private static FieldAttribute keywordField() {
336-
return new FieldAttribute(Source.EMPTY, "keyword", new EsField("keyword", DataType.KEYWORD, Map.of(), true));
348+
return new FieldAttribute(
349+
Source.EMPTY,
350+
"keyword",
351+
new EsField("keyword", DataType.KEYWORD, Map.of(), true, EsField.TimeSeriesFieldType.NONE)
352+
);
337353
}
338354

339355
private static Configuration configuration() {

muted-tests.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,9 @@ tests:
582582
- class: org.elasticsearch.upgrades.SyntheticSourceRollingUpgradeIT
583583
method: testIndexing {upgradedNodes=0}
584584
issue: https://github.com/elastic/elasticsearch/issues/133061
585+
- class: org.elasticsearch.xpack.test.rest.XPackRestIT
586+
method: test {p0=esql/60_usage/Basic ESQL usage output (telemetry) non-snapshot version}
587+
issue: https://github.com/elastic/elasticsearch/issues/133014
585588

586589
# Examples:
587590
#

server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/TasksIT.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.elasticsearch.index.query.QueryBuilders;
4242
import org.elasticsearch.persistent.PersistentTasksCustomMetadata;
4343
import org.elasticsearch.plugins.Plugin;
44-
import org.elasticsearch.search.SearchService;
4544
import org.elasticsearch.search.builder.SearchSourceBuilder;
4645
import org.elasticsearch.tasks.RemovedTaskListener;
4746
import org.elasticsearch.tasks.Task;
@@ -82,6 +81,8 @@
8281
import static java.util.Collections.singleton;
8382
import static org.elasticsearch.action.admin.cluster.node.tasks.TestTaskPlugin.TEST_TASK_ACTION;
8483
import static org.elasticsearch.action.admin.cluster.node.tasks.TestTaskPlugin.UNBLOCK_TASK_ACTION;
84+
import static org.elasticsearch.action.search.SearchQueryThenFetchAsyncAction.NODE_SEARCH_ACTION_NAME;
85+
import static org.elasticsearch.action.search.SearchTransportService.FREE_CONTEXT_SCROLL_ACTION_NAME;
8586
import static org.elasticsearch.core.TimeValue.timeValueMillis;
8687
import static org.elasticsearch.core.TimeValue.timeValueSeconds;
8788
import static org.elasticsearch.http.HttpTransportSettings.SETTING_HTTP_MAX_HEADER_SIZE;
@@ -353,8 +354,6 @@ public void testTransportBulkTasks() {
353354
}
354355

355356
public void testSearchTaskDescriptions() {
356-
// TODO: enhance this test to also check the tasks created by batched query execution
357-
updateClusterSettings(Settings.builder().put(SearchService.BATCHED_QUERY_PHASE.getKey(), false));
358357
registerTaskManagerListeners(TransportSearchAction.TYPE.name()); // main task
359358
registerTaskManagerListeners(TransportSearchAction.TYPE.name() + "[*]"); // shard task
360359
createIndex("test");
@@ -380,6 +379,11 @@ public void testSearchTaskDescriptions() {
380379
// check that if we have any shard-level requests they all have non-zero length description
381380
List<TaskInfo> shardTasks = findEvents(TransportSearchAction.TYPE.name() + "[*]", Tuple::v1);
382381
for (TaskInfo taskInfo : shardTasks) {
382+
// During batched query execution, if a partial reduction was done on the data node, a task will be created to free the reader.
383+
// These tasks don't have descriptions or parent tasks, so they're ignored for this test.
384+
if (taskInfo.action().equals(FREE_CONTEXT_SCROLL_ACTION_NAME)) {
385+
continue;
386+
}
383387
assertThat(taskInfo.parentTaskId(), notNullValue());
384388
assertEquals(mainTask.get(0).taskId(), taskInfo.parentTaskId());
385389
assertTaskHeaders(taskInfo);
@@ -396,12 +400,12 @@ public void testSearchTaskDescriptions() {
396400
taskInfo.description(),
397401
Regex.simpleMatch("id[*], size[1], lastEmittedDoc[null]", taskInfo.description())
398402
);
403+
case NODE_SEARCH_ACTION_NAME -> assertEquals("NodeQueryRequest", taskInfo.description());
399404
default -> fail("Unexpected action [" + taskInfo.action() + "] with description [" + taskInfo.description() + "]");
400405
}
401406
// assert that all task descriptions have non-zero length
402407
assertThat(taskInfo.description().length(), greaterThan(0));
403408
}
404-
updateClusterSettings(Settings.builder().putNull(SearchService.BATCHED_QUERY_PHASE.getKey()));
405409
}
406410

407411
public void testSearchTaskHeaderLimit() {

server/src/main/java/org/elasticsearch/action/search/SearchQueryThenFetchAsyncAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ private void onNodeQueryFailure(Exception e, NodeQueryRequest request, CanMatchP
552552
}
553553
}
554554

555-
private static final String NODE_SEARCH_ACTION_NAME = "indices:data/read/search[query][n]";
555+
public static final String NODE_SEARCH_ACTION_NAME = "indices:data/read/search[query][n]";
556556

557557
static void registerNodeSearchAction(
558558
SearchTransportService searchTransportService,

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/Attribute.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,9 @@ public static boolean dataTypeEquals(List<Attribute> left, List<Attribute> right
149149
}
150150
return true;
151151
}
152+
153+
/**
154+
* @return true if the attribute represents a TSDB dimension type
155+
*/
156+
public abstract boolean isDimension();
152157
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/EmptyAttribute.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ protected String label() {
4444
return "e";
4545
}
4646

47+
@Override
48+
public boolean isDimension() {
49+
return false;
50+
}
51+
4752
@Override
4853
public boolean resolved() {
4954
return true;

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/FieldAttribute.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,11 @@ protected String label() {
216216
return "f";
217217
}
218218

219+
@Override
220+
public boolean isDimension() {
221+
return field.getTimeSeriesFieldType() == EsField.TimeSeriesFieldType.DIMENSION;
222+
}
223+
219224
public EsField field() {
220225
return field;
221226
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/MetadataAttribute.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ protected String label() {
120120
return "m";
121121
}
122122

123+
@Override
124+
public boolean isDimension() {
125+
return false;
126+
}
127+
123128
@Override
124129
protected NodeInfo<? extends Expression> info() {
125130
return NodeInfo.create(this, MetadataAttribute::new, name(), dataType(), nullable(), id(), synthetic(), searchable);

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/ReferenceAttribute.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,9 @@ protected NodeInfo<ReferenceAttribute> info() {
117117
protected String label() {
118118
return "r";
119119
}
120+
121+
@Override
122+
public boolean isDimension() {
123+
return false;
124+
}
120125
}

0 commit comments

Comments
 (0)