4141import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .SHOW ;
4242import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .SORT ;
4343import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .STATS ;
44+ import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .TS ;
4445import static org .elasticsearch .xpack .esql .telemetry .FeatureMetric .WHERE ;
4546import static org .elasticsearch .xpack .esql .telemetry .Metrics .FEATURES_PREFIX ;
4647import static org .elasticsearch .xpack .esql .telemetry .Metrics .FUNC_PREFIX ;
@@ -63,6 +64,7 @@ public void testDissectQuery() {
6364 assertEquals (0 , show (c ));
6465 assertEquals (0 , row (c ));
6566 assertEquals (1L , from (c ));
67+ assertEquals (0 , ts (c ));
6668 assertEquals (0 , drop (c ));
6769 assertEquals (0 , keep (c ));
6870 assertEquals (0 , rename (c ));
@@ -86,6 +88,7 @@ public void testEvalQuery() {
8688 assertEquals (0 , show (c ));
8789 assertEquals (0 , row (c ));
8890 assertEquals (1L , from (c ));
91+ assertEquals (0 , ts (c ));
8992 assertEquals (0 , drop (c ));
9093 assertEquals (0 , keep (c ));
9194 assertEquals (0 , rename (c ));
@@ -109,6 +112,7 @@ public void testGrokQuery() {
109112 assertEquals (0 , show (c ));
110113 assertEquals (0 , row (c ));
111114 assertEquals (1L , from (c ));
115+ assertEquals (0 , ts (c ));
112116 assertEquals (0 , drop (c ));
113117 assertEquals (0 , keep (c ));
114118 assertEquals (0 , rename (c ));
@@ -132,6 +136,7 @@ public void testLimitQuery() {
132136 assertEquals (0 , show (c ));
133137 assertEquals (0 , row (c ));
134138 assertEquals (1L , from (c ));
139+ assertEquals (0 , ts (c ));
135140 assertEquals (0 , drop (c ));
136141 assertEquals (0 , keep (c ));
137142 assertEquals (0 , rename (c ));
@@ -154,6 +159,7 @@ public void testSortQuery() {
154159 assertEquals (0 , show (c ));
155160 assertEquals (0 , row (c ));
156161 assertEquals (1L , from (c ));
162+ assertEquals (0 , ts (c ));
157163 assertEquals (0 , drop (c ));
158164 assertEquals (0 , keep (c ));
159165 assertEquals (0 , rename (c ));
@@ -176,6 +182,7 @@ public void testStatsQuery() {
176182 assertEquals (0 , show (c ));
177183 assertEquals (0 , row (c ));
178184 assertEquals (1L , from (c ));
185+ assertEquals (0 , ts (c ));
179186 assertEquals (0 , drop (c ));
180187 assertEquals (0 , keep (c ));
181188 assertEquals (0 , rename (c ));
@@ -199,6 +206,7 @@ public void testWhereQuery() {
199206 assertEquals (0 , show (c ));
200207 assertEquals (0 , row (c ));
201208 assertEquals (1L , from (c ));
209+ assertEquals (0 , ts (c ));
202210 assertEquals (0 , drop (c ));
203211 assertEquals (0 , keep (c ));
204212 assertEquals (0 , rename (c ));
@@ -221,6 +229,7 @@ public void testTwoWhereQuery() {
221229 assertEquals (0 , show (c ));
222230 assertEquals (0 , row (c ));
223231 assertEquals (1L , from (c ));
232+ assertEquals (0 , ts (c ));
224233 assertEquals (0 , drop (c ));
225234 assertEquals (0 , keep (c ));
226235 assertEquals (0 , rename (c ));
@@ -263,6 +272,7 @@ public void testTwoQueriesExecuted() {
263272 assertEquals (0 , show (c ));
264273 assertEquals (0 , row (c ));
265274 assertEquals (2L , from (c ));
275+ assertEquals (0 , ts (c ));
266276 assertEquals (0 , drop (c ));
267277 assertEquals (0 , keep (c ));
268278 assertEquals (0 , rename (c ));
@@ -349,6 +359,7 @@ public void testEnrich() {
349359 assertEquals (0 , show (c ));
350360 assertEquals (0 , row (c ));
351361 assertEquals (1L , from (c ));
362+ assertEquals (0 , ts (c ));
352363 assertEquals (0 , drop (c ));
353364 assertEquals (1L , keep (c ));
354365 assertEquals (0 , rename (c ));
@@ -381,6 +392,7 @@ public void testMvExpand() {
381392 assertEquals (0 , show (c ));
382393 assertEquals (0 , row (c ));
383394 assertEquals (1L , from (c ));
395+ assertEquals (0 , ts (c ));
384396 assertEquals (0 , drop (c ));
385397 assertEquals (1L , keep (c ));
386398 assertEquals (0 , rename (c ));
@@ -403,6 +415,7 @@ public void testShowInfo() {
403415 assertEquals (1L , show (c ));
404416 assertEquals (0 , row (c ));
405417 assertEquals (0 , from (c ));
418+ assertEquals (0 , ts (c ));
406419 assertEquals (0 , drop (c ));
407420 assertEquals (0 , keep (c ));
408421 assertEquals (0 , rename (c ));
@@ -426,6 +439,7 @@ public void testRow() {
426439 assertEquals (0 , show (c ));
427440 assertEquals (1L , row (c ));
428441 assertEquals (0 , from (c ));
442+ assertEquals (0 , ts (c ));
429443 assertEquals (0 , drop (c ));
430444 assertEquals (0 , keep (c ));
431445 assertEquals (0 , rename (c ));
@@ -448,6 +462,7 @@ public void testDropAndRename() {
448462 assertEquals (0 , show (c ));
449463 assertEquals (0 , row (c ));
450464 assertEquals (1L , from (c ));
465+ assertEquals (0 , ts (c ));
451466 assertEquals (1L , drop (c ));
452467 assertEquals (0 , keep (c ));
453468 assertEquals (1L , rename (c ));
@@ -476,6 +491,7 @@ public void testKeep() {
476491 assertEquals (0 , show (c ));
477492 assertEquals (0 , row (c ));
478493 assertEquals (1L , from (c ));
494+ assertEquals (0 , ts (c ));
479495 assertEquals (0 , drop (c ));
480496 assertEquals (1L , keep (c ));
481497 assertEquals (0 , rename (c ));
@@ -502,6 +518,7 @@ public void testCategorize() {
502518 assertEquals (0 , show (c ));
503519 assertEquals (0 , row (c ));
504520 assertEquals (1L , from (c ));
521+ assertEquals (0 , ts (c ));
505522 assertEquals (0 , drop (c ));
506523 assertEquals (1L , keep (c ));
507524 assertEquals (0 , rename (c ));
@@ -530,6 +547,7 @@ public void testInlineStatsStandalone() {
530547 assertEquals (0 , show (c ));
531548 assertEquals (0 , row (c ));
532549 assertEquals (1L , from (c ));
550+ assertEquals (0 , ts (c ));
533551 assertEquals (0 , drop (c ));
534552 assertEquals (0 , keep (c ));
535553 assertEquals (0 , rename (c ));
@@ -558,6 +576,7 @@ public void testInlineStatsWithOtherStats() {
558576 assertEquals (0 , show (c ));
559577 assertEquals (0 , row (c ));
560578 assertEquals (1L , from (c ));
579+ assertEquals (0 , ts (c ));
561580 assertEquals (0 , drop (c ));
562581 assertEquals (0 , keep (c ));
563582 assertEquals (0 , rename (c ));
@@ -585,6 +604,7 @@ public void testBinaryPlanAfterStats() {
585604 assertEquals (0 , show (c ));
586605 assertEquals (0 , row (c ));
587606 assertEquals (1L , from (c ));
607+ assertEquals (0 , ts (c ));
588608 assertEquals (0 , drop (c ));
589609 assertEquals (0 , keep (c ));
590610 assertEquals (0 , rename (c ));
@@ -617,6 +637,7 @@ public void testBinaryPlanAfterStatsExpressionJoin() {
617637 assertEquals (0 , show (c ));
618638 assertEquals (0 , row (c ));
619639 assertEquals (1L , from (c ));
640+ assertEquals (0 , ts (c ));
620641 assertEquals (0 , drop (c ));
621642 assertEquals (0 , keep (c ));
622643 assertEquals (1L , rename (c ));
@@ -645,6 +666,7 @@ public void testBinaryPlanAfterInlineStats() {
645666 assertEquals (0 , show (c ));
646667 assertEquals (0 , row (c ));
647668 assertEquals (1L , from (c ));
669+ assertEquals (0 , ts (c ));
648670 assertEquals (0 , drop (c ));
649671 assertEquals (0 , keep (c ));
650672 assertEquals (0 , rename (c ));
@@ -654,6 +676,34 @@ public void testBinaryPlanAfterInlineStats() {
654676 assertEquals (1 , function ("max" , c ));
655677 }
656678
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 (1L , 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+
657707 private long dissect (Counters c ) {
658708 return c .get (FEATURES_PREFIX + DISSECT );
659709 }
@@ -702,6 +752,10 @@ private long from(Counters c) {
702752 return c .get (FEATURES_PREFIX + FROM );
703753 }
704754
755+ private long ts (Counters c ) {
756+ return c .get (FEATURES_PREFIX + TS );
757+ }
758+
705759 private long drop (Counters c ) {
706760 return c .get (FEATURES_PREFIX + DROP );
707761 }
0 commit comments