34
34
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .KEEP ;
35
35
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .LIMIT ;
36
36
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .LOOKUP_JOIN ;
37
+ import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .LOOKUP_JOIN_ON_EXPRESSION ;
37
38
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .MV_EXPAND ;
38
39
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .RENAME ;
39
40
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .ROW ;
@@ -65,7 +66,8 @@ public void testDissectQuery() {
65
66
assertEquals (0 , drop (c ));
66
67
assertEquals (0 , keep (c ));
67
68
assertEquals (0 , rename (c ));
68
- assertEquals (0 , lookupjoin (c ));
69
+ assertEquals (0 , lookupJoinOnFields (c ));
70
+ assertEquals (0 , lookupJoinOnExpression (c ));
69
71
assertEquals (0 , inlineStats (c ));
70
72
assertEquals (1 , function ("concat" , c ));
71
73
}
@@ -87,7 +89,8 @@ public void testEvalQuery() {
87
89
assertEquals (0 , drop (c ));
88
90
assertEquals (0 , keep (c ));
89
91
assertEquals (0 , rename (c ));
90
- assertEquals (0 , lookupjoin (c ));
92
+ assertEquals (0 , lookupJoinOnFields (c ));
93
+ assertEquals (0 , lookupJoinOnExpression (c ));
91
94
assertEquals (0 , inlineStats (c ));
92
95
assertEquals (1 , function ("length" , c ));
93
96
}
@@ -109,7 +112,8 @@ public void testGrokQuery() {
109
112
assertEquals (0 , drop (c ));
110
113
assertEquals (0 , keep (c ));
111
114
assertEquals (0 , rename (c ));
112
- assertEquals (0 , lookupjoin (c ));
115
+ assertEquals (0 , lookupJoinOnFields (c ));
116
+ assertEquals (0 , lookupJoinOnExpression (c ));
113
117
assertEquals (0 , inlineStats (c ));
114
118
assertEquals (1 , function ("concat" , c ));
115
119
}
@@ -131,7 +135,8 @@ public void testLimitQuery() {
131
135
assertEquals (0 , drop (c ));
132
136
assertEquals (0 , keep (c ));
133
137
assertEquals (0 , rename (c ));
134
- assertEquals (0 , lookupjoin (c ));
138
+ assertEquals (0 , lookupJoinOnFields (c ));
139
+ assertEquals (0 , lookupJoinOnExpression (c ));
135
140
assertEquals (0 , inlineStats (c ));
136
141
}
137
142
@@ -152,7 +157,8 @@ public void testSortQuery() {
152
157
assertEquals (0 , drop (c ));
153
158
assertEquals (0 , keep (c ));
154
159
assertEquals (0 , rename (c ));
155
- assertEquals (0 , lookupjoin (c ));
160
+ assertEquals (0 , lookupJoinOnFields (c ));
161
+ assertEquals (0 , lookupJoinOnExpression (c ));
156
162
assertEquals (0 , inlineStats (c ));
157
163
}
158
164
@@ -173,7 +179,8 @@ public void testStatsQuery() {
173
179
assertEquals (0 , drop (c ));
174
180
assertEquals (0 , keep (c ));
175
181
assertEquals (0 , rename (c ));
176
- assertEquals (0 , lookupjoin (c ));
182
+ assertEquals (0 , lookupJoinOnFields (c ));
183
+ assertEquals (0 , lookupJoinOnExpression (c ));
177
184
assertEquals (0 , inlineStats (c ));
178
185
assertEquals (1 , function ("max" , c ));
179
186
}
@@ -195,7 +202,8 @@ public void testWhereQuery() {
195
202
assertEquals (0 , drop (c ));
196
203
assertEquals (0 , keep (c ));
197
204
assertEquals (0 , rename (c ));
198
- assertEquals (0 , lookupjoin (c ));
205
+ assertEquals (0 , lookupJoinOnFields (c ));
206
+ assertEquals (0 , lookupJoinOnExpression (c ));
199
207
assertEquals (0 , inlineStats (c ));
200
208
}
201
209
@@ -216,7 +224,8 @@ public void testTwoWhereQuery() {
216
224
assertEquals (0 , drop (c ));
217
225
assertEquals (0 , keep (c ));
218
226
assertEquals (0 , rename (c ));
219
- assertEquals (0 , lookupjoin (c ));
227
+ assertEquals (0 , lookupJoinOnFields (c ));
228
+ assertEquals (0 , lookupJoinOnExpression (c ));
220
229
assertEquals (0 , inlineStats (c ));
221
230
}
222
231
@@ -257,7 +266,8 @@ public void testTwoQueriesExecuted() {
257
266
assertEquals (0 , drop (c ));
258
267
assertEquals (0 , keep (c ));
259
268
assertEquals (0 , rename (c ));
260
- assertEquals (0 , lookupjoin (c ));
269
+ assertEquals (0 , lookupJoinOnFields (c ));
270
+ assertEquals (0 , lookupJoinOnExpression (c ));
261
271
assertEquals (0 , inlineStats (c ));
262
272
263
273
assertEquals (1 , function ("length" , c ));
@@ -343,7 +353,8 @@ public void testEnrich() {
343
353
assertEquals (1L , keep (c ));
344
354
assertEquals (0 , rename (c ));
345
355
assertEquals (0 , inlineStats (c ));
346
- assertEquals (0 , lookupjoin (c ));
356
+ assertEquals (0 , lookupJoinOnFields (c ));
357
+ assertEquals (0 , lookupJoinOnExpression (c ));
347
358
assertEquals (1 , function ("to_string" , c ));
348
359
}
349
360
@@ -374,7 +385,8 @@ public void testMvExpand() {
374
385
assertEquals (1L , keep (c ));
375
386
assertEquals (0 , rename (c ));
376
387
assertEquals (0 , inlineStats (c ));
377
- assertEquals (0 , lookupjoin (c ));
388
+ assertEquals (0 , lookupJoinOnFields (c ));
389
+ assertEquals (0 , lookupJoinOnExpression (c ));
378
390
}
379
391
380
392
public void testShowInfo () {
@@ -395,7 +407,8 @@ public void testShowInfo() {
395
407
assertEquals (0 , keep (c ));
396
408
assertEquals (0 , rename (c ));
397
409
assertEquals (0 , inlineStats (c ));
398
- assertEquals (0 , lookupjoin (c ));
410
+ assertEquals (0 , lookupJoinOnFields (c ));
411
+ assertEquals (0 , lookupJoinOnExpression (c ));
399
412
assertEquals (1 , function ("count" , c ));
400
413
}
401
414
@@ -417,7 +430,8 @@ public void testRow() {
417
430
assertEquals (0 , keep (c ));
418
431
assertEquals (0 , rename (c ));
419
432
assertEquals (0 , inlineStats (c ));
420
- assertEquals (0 , lookupjoin (c ));
433
+ assertEquals (0 , lookupJoinOnFields (c ));
434
+ assertEquals (0 , lookupJoinOnExpression (c ));
421
435
}
422
436
423
437
public void testDropAndRename () {
@@ -438,7 +452,8 @@ public void testDropAndRename() {
438
452
assertEquals (0 , keep (c ));
439
453
assertEquals (1L , rename (c ));
440
454
assertEquals (0 , inlineStats (c ));
441
- assertEquals (0 , lookupjoin (c ));
455
+ assertEquals (0 , lookupJoinOnFields (c ));
456
+ assertEquals (0 , lookupJoinOnExpression (c ));
442
457
assertEquals (1 , function ("count" , c ));
443
458
}
444
459
@@ -465,7 +480,8 @@ public void testKeep() {
465
480
assertEquals (1L , keep (c ));
466
481
assertEquals (0 , rename (c ));
467
482
assertEquals (0 , inlineStats (c ));
468
- assertEquals (0 , lookupjoin (c ));
483
+ assertEquals (0 , lookupJoinOnFields (c ));
484
+ assertEquals (0 , lookupJoinOnExpression (c ));
469
485
}
470
486
471
487
public void testCategorize () {
@@ -490,7 +506,8 @@ public void testCategorize() {
490
506
assertEquals (1L , keep (c ));
491
507
assertEquals (0 , rename (c ));
492
508
assertEquals (0 , inlineStats (c ));
493
- assertEquals (0 , lookupjoin (c ));
509
+ assertEquals (0 , lookupJoinOnFields (c ));
510
+ assertEquals (0 , lookupJoinOnExpression (c ));
494
511
assertEquals (1 , function ("count" , c ));
495
512
assertEquals (1 , function ("categorize" , c ));
496
513
}
@@ -517,7 +534,8 @@ public void testInlineStatsStandalone() {
517
534
assertEquals (0 , keep (c ));
518
535
assertEquals (0 , rename (c ));
519
536
assertEquals (1L , inlineStats (c ));
520
- assertEquals (0 , lookupjoin (c ));
537
+ assertEquals (0 , lookupJoinOnFields (c ));
538
+ assertEquals (0 , lookupJoinOnExpression (c ));
521
539
assertEquals (1 , function ("max" , c ));
522
540
}
523
541
@@ -544,7 +562,8 @@ public void testInlineStatsWithOtherStats() {
544
562
assertEquals (0 , keep (c ));
545
563
assertEquals (0 , rename (c ));
546
564
assertEquals (1L , inlineStats (c ));
547
- assertEquals (0 , lookupjoin (c ));
565
+ assertEquals (0 , lookupJoinOnFields (c ));
566
+ assertEquals (0 , lookupJoinOnExpression (c ));
548
567
assertEquals (1 , function ("max" , c ));
549
568
}
550
569
@@ -570,7 +589,40 @@ public void testBinaryPlanAfterStats() {
570
589
assertEquals (0 , keep (c ));
571
590
assertEquals (0 , rename (c ));
572
591
assertEquals (0 , inlineStats (c ));
573
- assertEquals (1L , lookupjoin (c ));
592
+ assertEquals (1L , lookupJoinOnFields (c ));
593
+ assertEquals (0 , lookupJoinOnExpression (c ));
594
+ assertEquals (1 , function ("max" , c ));
595
+ }
596
+
597
+ public void testBinaryPlanAfterStatsExpressionJoin () {
598
+ assumeTrue (
599
+ "requires LOOKUP JOIN ON boolean expression capability" ,
600
+ EsqlCapabilities .Cap .LOOKUP_JOIN_ON_BOOLEAN_EXPRESSION .isEnabled ()
601
+ );
602
+ Counters c = esql ("""
603
+ from employees
604
+ | eval language_code = languages
605
+ | stats m = max(salary) by language_code
606
+ | rename language_code as language_code_left
607
+ | lookup join languages_lookup on language_code_left >= language_code""" );
608
+ assertEquals (0 , dissect (c ));
609
+ assertEquals (1L , eval (c ));
610
+ assertEquals (0 , grok (c ));
611
+ assertEquals (0 , limit (c ));
612
+ assertEquals (0 , sort (c ));
613
+ assertEquals (1L , stats (c ));
614
+ assertEquals (0 , where (c ));
615
+ assertEquals (0 , enrich (c ));
616
+ assertEquals (0 , mvExpand (c ));
617
+ assertEquals (0 , show (c ));
618
+ assertEquals (0 , row (c ));
619
+ assertEquals (1L , from (c ));
620
+ assertEquals (0 , drop (c ));
621
+ assertEquals (0 , keep (c ));
622
+ assertEquals (1L , rename (c ));
623
+ assertEquals (0 , inlineStats (c ));
624
+ assertEquals (0 , lookupJoinOnFields (c ));
625
+ assertEquals (1L , lookupJoinOnExpression (c ));
574
626
assertEquals (1 , function ("max" , c ));
575
627
}
576
628
@@ -597,7 +649,8 @@ public void testBinaryPlanAfterInlineStats() {
597
649
assertEquals (0 , keep (c ));
598
650
assertEquals (0 , rename (c ));
599
651
assertEquals (1L , inlineStats (c ));
600
- assertEquals (1L , lookupjoin (c ));
652
+ assertEquals (1L , lookupJoinOnFields (c ));
653
+ assertEquals (0 , lookupJoinOnExpression (c ));
601
654
assertEquals (1 , function ("max" , c ));
602
655
}
603
656
@@ -665,10 +718,14 @@ private long inlineStats(Counters c) {
665
718
return c .get (FEATURES_PREFIX + INLINE_STATS );
666
719
}
667
720
668
- private long lookupjoin (Counters c ) {
721
+ private long lookupJoinOnFields (Counters c ) {
669
722
return c .get (FEATURES_PREFIX + LOOKUP_JOIN );
670
723
}
671
724
725
+ private long lookupJoinOnExpression (Counters c ) {
726
+ return c .get (FEATURES_PREFIX + LOOKUP_JOIN_ON_EXPRESSION );
727
+ }
728
+
672
729
private long function (String function , Counters c ) {
673
730
return c .get (FUNC_PREFIX + function );
674
731
}
0 commit comments