diff --git a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/generative/GenerativeRestTest.java b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/generative/GenerativeRestTest.java index cb8e449375c37..ef397a69da95e 100644 --- a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/generative/GenerativeRestTest.java +++ b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/generative/GenerativeRestTest.java @@ -174,7 +174,6 @@ public void test() throws IOException { var exec = new EsqlQueryGenerator.Executor() { @Override public void run(CommandGenerator generator, CommandGenerator.CommandDescription current) { - previousCommands.add(current); final String command = current.commandString(); final QueryExecuted result = previousResult == null @@ -182,7 +181,7 @@ public void run(CommandGenerator generator, CommandGenerator.CommandDescription : execute(previousResult.query() + command, previousResult.depth()); final boolean hasException = result.exception() != null; - if (hasException || checkResults(List.of(), generator, current, previousResult, result).success() == false) { + if (hasException || checkResults(previousCommands, generator, current, previousResult, result).success() == false) { if (hasException) { checkException(result); } @@ -192,6 +191,7 @@ public void run(CommandGenerator generator, CommandGenerator.CommandDescription continueExecuting = true; currentSchema = result.outputSchema(); } + previousCommands.add(current); previousResult = result; } diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/CommandGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/CommandGenerator.java index e18748be154f8..721b217125eb5 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/CommandGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/CommandGenerator.java @@ -10,6 +10,7 @@ import org.elasticsearch.xpack.esql.CsvTestsDataLoader; import org.elasticsearch.xpack.esql.generator.Column; import org.elasticsearch.xpack.esql.generator.EsqlQueryGenerator; +import org.elasticsearch.xpack.esql.generator.FunctionGenerator; import org.elasticsearch.xpack.esql.generator.LookupIdx; import org.elasticsearch.xpack.esql.generator.QueryExecutor; @@ -119,7 +120,15 @@ static ValidationResult expectSameRowCount( return VALIDATION_OK; } - static ValidationResult expectSameColumns(List previousColumns, List columns) { + static ValidationResult expectSameColumns( + List previousCommands, + List previousColumns, + List columns + ) { + + if (FunctionGenerator.isUnmappedFieldsEnabled(previousCommands)) { + return VALIDATION_OK; + } if (previousColumns.stream().anyMatch(x -> x.name().contains(""))) { return VALIDATION_OK; // known bug diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/EvalGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/EvalGenerator.java index eb616c944cc10..50bce7ee40ef5 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/EvalGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/EvalGenerator.java @@ -9,6 +9,7 @@ import org.elasticsearch.xpack.esql.generator.Column; import org.elasticsearch.xpack.esql.generator.EsqlQueryGenerator; +import org.elasticsearch.xpack.esql.generator.FunctionGenerator; import org.elasticsearch.xpack.esql.generator.QueryExecutor; import org.elasticsearch.xpack.esql.generator.command.CommandGenerator; @@ -89,7 +90,8 @@ public ValidationResult validateOutput( List expectedColumns = (List) commandDescription.context().get(NEW_COLUMNS); List resultColNames = columns.stream().map(Column::name).toList(); List lastColumns = resultColNames.subList(resultColNames.size() - expectedColumns.size(), resultColNames.size()); - if (columns.size() < expectedColumns.size() || lastColumns.equals(expectedColumns) == false) { + if (FunctionGenerator.isUnmappedFieldsEnabled(previousCommands) == false + && (columns.size() < expectedColumns.size() || lastColumns.equals(expectedColumns) == false)) { return new ValidationResult( false, "Expecting the following as last columns [" diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LimitGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LimitGenerator.java index 309f0018805ef..bfd605cbcfd3f 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LimitGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LimitGenerator.java @@ -48,6 +48,6 @@ public ValidationResult validateOutput( if (output.size() > limit) { return new ValidationResult(false, "Expecting at most [" + limit + "] records, got [" + output.size() + "]"); } - return CommandGenerator.expectSameColumns(previousColumns, columns); + return CommandGenerator.expectSameColumns(previousCommands, previousColumns, columns); } } diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LookupJoinGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LookupJoinGenerator.java index 9ca8b59b6ff8b..700bc74d2c2cc 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LookupJoinGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/LookupJoinGenerator.java @@ -91,7 +91,7 @@ public CommandDescription generate( } } String cmdString = stringBuilder.toString(); - return new CommandDescription(LOOKUP_JOIN, this, cmdString, Map.of()); + return new CommandDescription(LOOKUP_JOIN, this, cmdString, Map.of("nKeys", keyNames.size())); } @Override @@ -107,8 +107,8 @@ public ValidationResult validateOutput( return VALIDATION_OK; } - // the -1 is for the additional RENAME, that could drop one column - int prevCols = previousColumns.size() - 1; + // this is for the additional RENAME, that could drop columns + int prevCols = previousColumns.size() - (Integer) commandDescription.context().get("nKeys"); if (previousColumns.stream().anyMatch(x -> x.name().equals(""))) { // known bug https://github.com/elastic/elasticsearch/issues/121741 diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/MvExpandGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/MvExpandGenerator.java index 7be8d0bdff62a..191c6a2c64fcf 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/MvExpandGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/MvExpandGenerator.java @@ -48,7 +48,7 @@ public ValidationResult validateOutput( if (commandDescription == EMPTY_DESCRIPTION) { return VALIDATION_OK; } - return CommandGenerator.expectSameColumns(previousColumns, columns); + return CommandGenerator.expectSameColumns(previousCommands, previousColumns, columns); } } diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SampleGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SampleGenerator.java index f8ed78a09bd79..5d2a86383aa92 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SampleGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SampleGenerator.java @@ -42,6 +42,6 @@ public ValidationResult validateOutput( List columns, List> output ) { - return CommandGenerator.expectSameColumns(previousColumns, columns); + return CommandGenerator.expectSameColumns(previousCommands, previousColumns, columns); } } diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SortGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SortGenerator.java index 4d61c00d1391c..3d68c66cb13f8 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SortGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/SortGenerator.java @@ -58,6 +58,6 @@ public ValidationResult validateOutput( List columns, List> output ) { - return CommandGenerator.expectSameColumns(previousColumns, columns); + return CommandGenerator.expectSameColumns(previousCommands, previousColumns, columns); } } diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/WhereGenerator.java b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/WhereGenerator.java index c0172960a1db7..61689cc451954 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/WhereGenerator.java +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/generator/command/pipe/WhereGenerator.java @@ -68,6 +68,6 @@ public ValidationResult validateOutput( List columns, List> output ) { - return CommandGenerator.expectSameColumns(previousColumns, columns); + return CommandGenerator.expectSameColumns(previousCommands, previousColumns, columns); } }