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 @@ -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"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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(),
Expand Down Expand Up @@ -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(),
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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"));

Expand All @@ -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);

Expand All @@ -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"));

Expand All @@ -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"));

Expand All @@ -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);

Expand Down Expand Up @@ -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"));

Expand Down