41
41
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .SHOW ;
42
42
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .SORT ;
43
43
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .STATS ;
44
+ import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .TS ;
44
45
import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .WHERE ;
45
46
import static org .elasticsearch .xpack .esql .telemetry .Metrics .FEATURES_PREFIX ;
46
47
import static org .elasticsearch .xpack .esql .telemetry .Metrics .FUNC_PREFIX ;
@@ -63,6 +64,7 @@ public void testDissectQuery() {
63
64
assertEquals (0 , show (c ));
64
65
assertEquals (0 , row (c ));
65
66
assertEquals (1L , from (c ));
67
+ assertEquals (0 , ts (c ));
66
68
assertEquals (0 , drop (c ));
67
69
assertEquals (0 , keep (c ));
68
70
assertEquals (0 , rename (c ));
@@ -86,6 +88,7 @@ public void testEvalQuery() {
86
88
assertEquals (0 , show (c ));
87
89
assertEquals (0 , row (c ));
88
90
assertEquals (1L , from (c ));
91
+ assertEquals (0 , ts (c ));
89
92
assertEquals (0 , drop (c ));
90
93
assertEquals (0 , keep (c ));
91
94
assertEquals (0 , rename (c ));
@@ -109,6 +112,7 @@ public void testGrokQuery() {
109
112
assertEquals (0 , show (c ));
110
113
assertEquals (0 , row (c ));
111
114
assertEquals (1L , from (c ));
115
+ assertEquals (0 , ts (c ));
112
116
assertEquals (0 , drop (c ));
113
117
assertEquals (0 , keep (c ));
114
118
assertEquals (0 , rename (c ));
@@ -132,6 +136,7 @@ public void testLimitQuery() {
132
136
assertEquals (0 , show (c ));
133
137
assertEquals (0 , row (c ));
134
138
assertEquals (1L , from (c ));
139
+ assertEquals (0 , ts (c ));
135
140
assertEquals (0 , drop (c ));
136
141
assertEquals (0 , keep (c ));
137
142
assertEquals (0 , rename (c ));
@@ -154,6 +159,7 @@ public void testSortQuery() {
154
159
assertEquals (0 , show (c ));
155
160
assertEquals (0 , row (c ));
156
161
assertEquals (1L , from (c ));
162
+ assertEquals (0 , ts (c ));
157
163
assertEquals (0 , drop (c ));
158
164
assertEquals (0 , keep (c ));
159
165
assertEquals (0 , rename (c ));
@@ -176,6 +182,7 @@ public void testStatsQuery() {
176
182
assertEquals (0 , show (c ));
177
183
assertEquals (0 , row (c ));
178
184
assertEquals (1L , from (c ));
185
+ assertEquals (0 , ts (c ));
179
186
assertEquals (0 , drop (c ));
180
187
assertEquals (0 , keep (c ));
181
188
assertEquals (0 , rename (c ));
@@ -199,6 +206,7 @@ public void testWhereQuery() {
199
206
assertEquals (0 , show (c ));
200
207
assertEquals (0 , row (c ));
201
208
assertEquals (1L , from (c ));
209
+ assertEquals (0 , ts (c ));
202
210
assertEquals (0 , drop (c ));
203
211
assertEquals (0 , keep (c ));
204
212
assertEquals (0 , rename (c ));
@@ -221,6 +229,7 @@ public void testTwoWhereQuery() {
221
229
assertEquals (0 , show (c ));
222
230
assertEquals (0 , row (c ));
223
231
assertEquals (1L , from (c ));
232
+ assertEquals (0 , ts (c ));
224
233
assertEquals (0 , drop (c ));
225
234
assertEquals (0 , keep (c ));
226
235
assertEquals (0 , rename (c ));
@@ -263,6 +272,7 @@ public void testTwoQueriesExecuted() {
263
272
assertEquals (0 , show (c ));
264
273
assertEquals (0 , row (c ));
265
274
assertEquals (2L , from (c ));
275
+ assertEquals (0 , ts (c ));
266
276
assertEquals (0 , drop (c ));
267
277
assertEquals (0 , keep (c ));
268
278
assertEquals (0 , rename (c ));
@@ -349,6 +359,7 @@ public void testEnrich() {
349
359
assertEquals (0 , show (c ));
350
360
assertEquals (0 , row (c ));
351
361
assertEquals (1L , from (c ));
362
+ assertEquals (0 , ts (c ));
352
363
assertEquals (0 , drop (c ));
353
364
assertEquals (1L , keep (c ));
354
365
assertEquals (0 , rename (c ));
@@ -381,6 +392,7 @@ public void testMvExpand() {
381
392
assertEquals (0 , show (c ));
382
393
assertEquals (0 , row (c ));
383
394
assertEquals (1L , from (c ));
395
+ assertEquals (0 , ts (c ));
384
396
assertEquals (0 , drop (c ));
385
397
assertEquals (1L , keep (c ));
386
398
assertEquals (0 , rename (c ));
@@ -403,6 +415,7 @@ public void testShowInfo() {
403
415
assertEquals (1L , show (c ));
404
416
assertEquals (0 , row (c ));
405
417
assertEquals (0 , from (c ));
418
+ assertEquals (0 , ts (c ));
406
419
assertEquals (0 , drop (c ));
407
420
assertEquals (0 , keep (c ));
408
421
assertEquals (0 , rename (c ));
@@ -426,6 +439,7 @@ public void testRow() {
426
439
assertEquals (0 , show (c ));
427
440
assertEquals (1L , row (c ));
428
441
assertEquals (0 , from (c ));
442
+ assertEquals (0 , ts (c ));
429
443
assertEquals (0 , drop (c ));
430
444
assertEquals (0 , keep (c ));
431
445
assertEquals (0 , rename (c ));
@@ -448,6 +462,7 @@ public void testDropAndRename() {
448
462
assertEquals (0 , show (c ));
449
463
assertEquals (0 , row (c ));
450
464
assertEquals (1L , from (c ));
465
+ assertEquals (0 , ts (c ));
451
466
assertEquals (1L , drop (c ));
452
467
assertEquals (0 , keep (c ));
453
468
assertEquals (1L , rename (c ));
@@ -476,6 +491,7 @@ public void testKeep() {
476
491
assertEquals (0 , show (c ));
477
492
assertEquals (0 , row (c ));
478
493
assertEquals (1L , from (c ));
494
+ assertEquals (0 , ts (c ));
479
495
assertEquals (0 , drop (c ));
480
496
assertEquals (1L , keep (c ));
481
497
assertEquals (0 , rename (c ));
@@ -502,6 +518,7 @@ public void testCategorize() {
502
518
assertEquals (0 , show (c ));
503
519
assertEquals (0 , row (c ));
504
520
assertEquals (1L , from (c ));
521
+ assertEquals (0 , ts (c ));
505
522
assertEquals (0 , drop (c ));
506
523
assertEquals (1L , keep (c ));
507
524
assertEquals (0 , rename (c ));
@@ -530,6 +547,7 @@ public void testInlineStatsStandalone() {
530
547
assertEquals (0 , show (c ));
531
548
assertEquals (0 , row (c ));
532
549
assertEquals (1L , from (c ));
550
+ assertEquals (0 , ts (c ));
533
551
assertEquals (0 , drop (c ));
534
552
assertEquals (0 , keep (c ));
535
553
assertEquals (0 , rename (c ));
@@ -558,6 +576,7 @@ public void testInlineStatsWithOtherStats() {
558
576
assertEquals (0 , show (c ));
559
577
assertEquals (0 , row (c ));
560
578
assertEquals (1L , from (c ));
579
+ assertEquals (0 , ts (c ));
561
580
assertEquals (0 , drop (c ));
562
581
assertEquals (0 , keep (c ));
563
582
assertEquals (0 , rename (c ));
@@ -585,6 +604,7 @@ public void testBinaryPlanAfterStats() {
585
604
assertEquals (0 , show (c ));
586
605
assertEquals (0 , row (c ));
587
606
assertEquals (1L , from (c ));
607
+ assertEquals (0 , ts (c ));
588
608
assertEquals (0 , drop (c ));
589
609
assertEquals (0 , keep (c ));
590
610
assertEquals (0 , rename (c ));
@@ -617,6 +637,7 @@ public void testBinaryPlanAfterStatsExpressionJoin() {
617
637
assertEquals (0 , show (c ));
618
638
assertEquals (0 , row (c ));
619
639
assertEquals (1L , from (c ));
640
+ assertEquals (0 , ts (c ));
620
641
assertEquals (0 , drop (c ));
621
642
assertEquals (0 , keep (c ));
622
643
assertEquals (1L , rename (c ));
@@ -645,6 +666,7 @@ public void testBinaryPlanAfterInlineStats() {
645
666
assertEquals (0 , show (c ));
646
667
assertEquals (0 , row (c ));
647
668
assertEquals (1L , from (c ));
669
+ assertEquals (0 , ts (c ));
648
670
assertEquals (0 , drop (c ));
649
671
assertEquals (0 , keep (c ));
650
672
assertEquals (0 , rename (c ));
@@ -654,6 +676,60 @@ public void testBinaryPlanAfterInlineStats() {
654
676
assertEquals (1 , function ("max" , c ));
655
677
}
656
678
679
+ public void testTimeSeriesAggregate () {
680
+ assumeTrue ("TS required" , EsqlCapabilities .Cap .TS_COMMAND_V0 .isEnabled ());
681
+ Counters c = esql ("""
682
+ TS metrics
683
+ | STATS sum(avg_over_time(salary))""" );
684
+ assertEquals (0 , dissect (c ));
685
+ assertEquals (0 , eval (c ));
686
+ assertEquals (0 , grok (c ));
687
+ assertEquals (0 , limit (c ));
688
+ assertEquals (0 , sort (c ));
689
+ assertEquals (1L , stats (c ));
690
+ assertEquals (0 , where (c ));
691
+ assertEquals (0 , enrich (c ));
692
+ assertEquals (0 , mvExpand (c ));
693
+ assertEquals (0 , show (c ));
694
+ assertEquals (0 , row (c ));
695
+ assertEquals (0 , from (c ));
696
+ assertEquals (1L , ts (c ));
697
+ assertEquals (0 , drop (c ));
698
+ assertEquals (0 , keep (c ));
699
+ assertEquals (0 , rename (c ));
700
+ assertEquals (0 , inlineStats (c ));
701
+ assertEquals (0 , lookupJoinOnFields (c ));
702
+ assertEquals (0 , lookupJoinOnExpression (c ));
703
+ assertEquals (1 , function ("sum" , c ));
704
+ assertEquals (1 , function ("avg_over_time" , c ));
705
+ }
706
+
707
+ public void testTimeSeriesNoAggregate () {
708
+ assumeTrue ("TS required" , EsqlCapabilities .Cap .TS_COMMAND_V0 .isEnabled ());
709
+ Counters c = esql ("""
710
+ TS metrics
711
+ | KEEP salary""" );
712
+ assertEquals (0 , dissect (c ));
713
+ assertEquals (0 , eval (c ));
714
+ assertEquals (0 , grok (c ));
715
+ assertEquals (0 , limit (c ));
716
+ assertEquals (0 , sort (c ));
717
+ assertEquals (0 , stats (c ));
718
+ assertEquals (0 , where (c ));
719
+ assertEquals (0 , enrich (c ));
720
+ assertEquals (0 , mvExpand (c ));
721
+ assertEquals (0 , show (c ));
722
+ assertEquals (0 , row (c ));
723
+ assertEquals (0 , from (c ));
724
+ assertEquals (1L , ts (c ));
725
+ assertEquals (0 , drop (c ));
726
+ assertEquals (1L , keep (c ));
727
+ assertEquals (0 , rename (c ));
728
+ assertEquals (0 , inlineStats (c ));
729
+ assertEquals (0 , lookupJoinOnFields (c ));
730
+ assertEquals (0 , lookupJoinOnExpression (c ));
731
+ }
732
+
657
733
private long dissect (Counters c ) {
658
734
return c .get (FEATURES_PREFIX + DISSECT );
659
735
}
@@ -702,6 +778,10 @@ private long from(Counters c) {
702
778
return c .get (FEATURES_PREFIX + FROM );
703
779
}
704
780
781
+ private long ts (Counters c ) {
782
+ return c .get (FEATURES_PREFIX + TS );
783
+ }
784
+
705
785
private long drop (Counters c ) {
706
786
return c .get (FEATURES_PREFIX + DROP );
707
787
}
0 commit comments