Skip to content

Commit f2af414

Browse files
More tests
1 parent 2d34e50 commit f2af414

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LogicalPlanOptimizerTests.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7420,6 +7420,42 @@ public void testRedundantSortOnMvExpandJoinEnrichGrokDissect() {
74207420
as(eval.child(), EsRelation.class);
74217421
}
74227422

7423+
/**
7424+
* TopN[[Order[emp_no{f}#23,ASC,LAST]],1000[INTEGER]]
7425+
* \_Filter[emp_no{f}#23 > 1[INTEGER]]
7426+
* \_MvExpand[languages{f}#26,languages{r}#36]
7427+
* \_EsqlProject[[language_name{f}#35, foo{r}#5 AS bar, languages{f}#26, emp_no{f}#23]]
7428+
* \_Join[LEFT,[language_code{r}#8],[language_code{r}#8],[language_code{f}#34]]
7429+
* |_Project[[_meta_field{f}#29, emp_no{f}#23, first_name{f}#24, gender{f}#25, hire_date{f}#30, job{f}#31, job.raw{f}#32, l
7430+
* anguages{f}#26, last_name{f}#27, long_noidx{f}#33, salary{f}#28, foo{r}#5, languages{f}#26 AS language_code]]
7431+
* | \_Eval[[TOSTRING(languages{f}#26) AS foo]]
7432+
* | \_EsRelation[test][_meta_field{f}#29, emp_no{f}#23, first_name{f}#24, ..]
7433+
* \_EsRelation[languages_lookup][LOOKUP][language_code{f}#34, language_name{f}#35]
7434+
*/
7435+
public void testRedundantSortOnMvExpandJoinKeepDropRename() {
7436+
var plan = optimizedPlan("""
7437+
FROM test
7438+
| SORT languages
7439+
| EVAL foo = to_string(languages), language_code = languages
7440+
| LOOKUP JOIN languages_lookup ON language_code
7441+
| KEEP language_name, language_code, foo, languages, emp_no
7442+
| DROP language_code
7443+
| RENAME foo AS bar
7444+
| MV_EXPAND languages
7445+
| WHERE emp_no > 1
7446+
| SORT emp_no
7447+
""");
7448+
7449+
var topN = as(plan, TopN.class);
7450+
var filter = as(topN.child(), Filter.class);
7451+
var mvExpand = as(filter.child(), MvExpand.class);
7452+
var project = as(mvExpand.child(), Project.class);
7453+
var join = as(project.child(), Join.class);
7454+
var project2 = as(join.left(), Project.class);
7455+
var eval = as(project2.child(), Eval.class);
7456+
as(eval.child(), EsRelation.class);
7457+
}
7458+
74237459
/**
74247460
* TopN[[Order[emp_no{f}#15,ASC,LAST]],1000[INTEGER]]
74257461
* \_Filter[emp_no{f}#15 > 1[INTEGER]]
@@ -7467,6 +7503,18 @@ public void testUnboundedSortSimple() {
74677503
assertThat(e.getMessage(), containsString("line 2:5: Unbounded sort not supported yet [SORT y] please add a limit"));
74687504
}
74697505

7506+
public void testUnboundedSortJoin() {
7507+
var query = """
7508+
ROW x = [1,2,3], y = 2, language_code = 1
7509+
| SORT y
7510+
| LOOKUP JOIN languages_lookup ON language_code
7511+
| WHERE language_name == "foo"
7512+
""";
7513+
7514+
VerificationException e = expectThrows(VerificationException.class, () -> plan(query));
7515+
assertThat(e.getMessage(), containsString("line 2:5: Unbounded sort not supported yet [SORT y] please add a limit"));
7516+
}
7517+
74707518
public void testUnboundedSortWithMvExpandAndFilter() {
74717519
var query = """
74727520
FROM test

0 commit comments

Comments
 (0)