diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LogicalPlanOptimizerTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LogicalPlanOptimizerTests.java index a780d483c74ae..4a3464c1116dd 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LogicalPlanOptimizerTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LogicalPlanOptimizerTests.java @@ -5750,7 +5750,7 @@ public void testInlinestatsNestedExpressionsInGroups() { var stub = as(agg.child(), StubRelation.class); } - private static boolean releaseBuildForInlinestats(String query) { + public static boolean releaseBuildForInlinestats(String query) { if (Build.current().isSnapshot() == false) { var e = expectThrows(ParsingException.class, () -> analyze(query)); assertThat(e.getMessage(), containsString("mismatched input 'INLINESTATS' expecting")); diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStatsFilteredAggWithEvalTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStatsFilteredAggWithEvalTests.java index 464c12a81f97d..22a4eb483b0c6 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStatsFilteredAggWithEvalTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStatsFilteredAggWithEvalTests.java @@ -32,6 +32,7 @@ import static org.elasticsearch.xpack.esql.EsqlTestUtils.as; import static org.elasticsearch.xpack.esql.core.type.DataType.INTEGER; import static org.elasticsearch.xpack.esql.core.type.DataType.LONG; +import static org.elasticsearch.xpack.esql.optimizer.LogicalPlanOptimizerTests.releaseBuildForInlinestats; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; @@ -391,11 +392,14 @@ public void testReplaceStatsFilteredAggWithEvalSingleAggWithGroup() { * \_EsRelation[test][_meta_field{f}#10, emp_no{f}#4, first_name{f}#5, ge..] */ public void testReplaceInlinestatsFilteredAggWithEvalSingleAgg() { - var plan = plan(""" + var query = """ from test | inlinestats sum(salary) where false - """); - + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var project = as(plan, Project.class); assertMap( Expressions.names(project.projections()).stream().map(Object::toString).toList(), @@ -431,11 +435,14 @@ public void testReplaceInlinestatsFilteredAggWithEvalSingleAgg() { * \_EsRelation[test][_meta_field{f}#10, emp_no{f}#4, first_name{f}#5, ge..] */ public void testReplaceInlinestatsFilteredAggWithEvalSingleAggWithExpression() { - var plan = plan(""" + var query = """ from test | inlinestats sum(salary) + 1 where false - """); - + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var project = as(plan, Project.class); assertMap( Expressions.names(project.projections()).stream().map(Object::toString).toList(), @@ -475,14 +482,17 @@ public void testReplaceInlinestatsFilteredAggWithEvalSingleAggWithExpression() { * \_StubRelation[[salary{f}#14, emp_no{f}#9]] */ public void testReplaceInlinestatsFilteredAggWithEvalMixedFilterAndNoFilter() { - var plan = plan(""" + var query = """ from test | keep salary, emp_no | inlinestats sum(salary) + 1 where false, sum(salary) + 2 by emp_no - """); - + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var limit = as(plan, Limit.class); var ij = as(limit.child(), InlineJoin.class); var left = as(ij.left(), EsqlProject.class); @@ -528,14 +538,18 @@ public void testReplaceInlinestatsFilteredAggWithEvalMixedFilterAndNoFilter() { * \_StubRelation[[salary{f}#16]] */ public void testReplaceInlinestatsFilteredAggWithEvalFilterFalseAndNull() { - var plan = plan(""" + var query = """ from test | keep salary | inlinestats sum(salary) + 1 where false, sum(salary) + 3, sum(salary) + 2 where null, sum(salary) + 4 where not true - """); + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var limit = as(plan, Limit.class); var ij = as(limit.child(), InlineJoin.class); @@ -578,12 +592,15 @@ public void testReplaceInlinestatsFilteredAggWithEvalFilterFalseAndNull() { * \_EsRelation[test][_meta_field{f}#12, emp_no{f}#6, first_name{f}#7, ge..] */ public void testReplaceInlinestatsFilteredAggWithEvalNotTrue() { - var plan = plan(""" + var query = """ from test | keep emp_no, salary | inlinestats count(salary) where not true - """); - + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var project = as(plan, EsqlProject.class); assertThat(Expressions.names(project.projections()), contains("emp_no", "salary", "count(salary) where not true")); @@ -608,11 +625,15 @@ public void testReplaceInlinestatsFilteredAggWithEvalNotTrue() { * \_StubRelation[[emp_no{f}#8, salary{f}#13, gender{f}#10]] */ public void testReplaceInlinestatsFilteredAggWithEvalNotFalse() { - var plan = plan(""" + var query = """ from test | keep emp_no, salary, gender | inlinestats m1 = count(salary) where not false - """); + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var limit = as(plan, Limit.class); var ij = as(limit.child(), InlineJoin.class); @@ -638,11 +659,15 @@ public void testReplaceInlinestatsFilteredAggWithEvalNotFalse() { * \_EsRelation[test][_meta_field{f}#11, emp_no{f}#5, first_name{f}#6, ge..] */ public void testReplaceInlinestatsFilteredAggWithEvalCount() { - var plan = plan(""" + var query = """ from test | keep salary | inlinestats count(salary) where false - """); + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var project = as(plan, EsqlProject.class); assertThat(Expressions.names(project.projections()), contains("salary", "count(salary) where false")); @@ -664,11 +689,15 @@ public void testReplaceInlinestatsFilteredAggWithEvalCount() { * \_EsRelation[test][_meta_field{f}#11, emp_no{f}#5, first_name{f}#6, ge..] */ public void testReplaceInlinestatsFilteredAggWithEvalCountDistinctInExpression() { - var plan = plan(""" + var query = """ from test | keep salary | inlinestats count_distinct(salary + 2) + 3 where false - """); + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var project = as(plan, EsqlProject.class); assertThat(Expressions.names(project.projections()), contains("salary", "count_distinct(salary + 2) + 3 where false")); @@ -695,14 +724,18 @@ public void testReplaceInlinestatsFilteredAggWithEvalCountDistinctInExpression() * \_StubRelation[[emp_no{f}#17, salary{f}#22]] */ public void testReplaceInlinestatsFilteredAggWithEvalSameAggWithAndWithoutFilter() { - var plan = plan(""" + var query = """ from test | keep emp_no, salary | inlinestats max = max(salary), max_a = max(salary) where null, min = min(salary), min_a = min(salary) where to_string(null) == "abc" by emp_no - """); + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var limit = as(plan, Limit.class); var ij = as(limit.child(), InlineJoin.class); @@ -743,15 +776,18 @@ public void testReplaceInlinestatsFilteredAggWithEvalSameAggWithAndWithoutFilter * \_EsRelation[test][_meta_field{f}#15, emp_no{f}#9, first_name{f}#10, g..] */ public void testReplaceTwoConsecutiveInlinestats_WithFalseFilters() { - var plan = plan(""" + var query = """ from test | keep emp_no | sort emp_no | limit 3 | inlinestats count = count(*) where false | inlinestats cc = count_distinct(emp_no) where false - """); - + """; + if (releaseBuildForInlinestats(query)) { + return; + } + var plan = plan(query); var project = as(plan, EsqlProject.class); assertThat(Expressions.names(project.projections()), contains("emp_no", "count", "cc"));