Skip to content

Commit c7715fa

Browse files
committed
Adds extra tests
1 parent d591ab7 commit c7715fa

File tree

2 files changed

+60
-38
lines changed

2 files changed

+60
-38
lines changed

x-pack/plugin/esql/qa/testFixtures/src/main/resources/stats.csv-spec

Lines changed: 56 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3148,16 +3148,20 @@ m:datetime | x:integer | d:boolean
31483148

31493149
sumWithConditions
31503150
required_capability: stats_with_filtered_surrogate_fixed
3151+
required_capability: aggregate_metric_double_convert_to
31513152

31523153
FROM employees
3154+
| EVAL agg_metric = TO_AGGREGATE_METRIC_DOUBLE(1)
31533155
| STATS sum1 = SUM(1),
31543156
sum2 = SUM(1) WHERE emp_no == 10080,
31553157
sum3 = SUM(1) WHERE emp_no < 10080,
3156-
sum4 = SUM(1) WHERE emp_no >= 10080
3158+
sum4 = SUM(1) WHERE emp_no >= 10080,
3159+
sum5 = SUM(agg_metric),
3160+
sum6 = SUM(agg_metric) WHERE emp_no == 10080
31573161
;
31583162

3159-
sum1:long | sum2:long | sum3:long | sum4:long
3160-
100 | 1 | 79 | 21
3163+
sum1:long | sum2:long | sum3:long | sum4:long | sum5:double | sum6:double
3164+
100 | 1 | 79 | 21 | 100.0 | 1.0
31613165
;
31623166

31633167
weightedAvgWithConditions
@@ -3168,11 +3172,13 @@ ROW x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
31683172
| STATS w_avg1 = WEIGHTED_AVG(x, 1) WHERE x == 5,
31693173
w_avg2 = WEIGHTED_AVG(x, x) WHERE x == 5,
31703174
w_avg3 = WEIGHTED_AVG(x, 2) WHERE x <= 5,
3171-
w_avg4 = WEIGHTED_AVG(x, x) WHERE x > 5
3175+
w_avg4 = WEIGHTED_AVG(x, x) WHERE x > 5,
3176+
w_avg5 = WEIGHTED_AVG([1,2,3], 1),
3177+
w_avg6 = WEIGHTED_AVG([1,2,3], 1) WHERE x == 5
31723178
;
31733179

3174-
w_avg1:double | w_avg2:double | w_avg3:double | w_avg4:double
3175-
5.0 | 5.0 | 3.0 | 8.25
3180+
w_avg1:double | w_avg2:double | w_avg3:double | w_avg4:double | w_avg5:double | w_avg6:double
3181+
5.0 | 5.0 | 3.0 | 8.25 | 2.0 | 2.0
31763182
;
31773183

31783184
maxWithConditions
@@ -3182,11 +3188,14 @@ required_capability: aggregate_metric_double_convert_to
31823188
ROW x = [1, 2, 3, 4, 5]
31833189
| MV_EXPAND x
31843190
| EVAL agg_metric = TO_AGGREGATE_METRIC_DOUBLE(x)
3185-
| STATS max = MAX(agg_metric) WHERE x <= 3
3191+
| STATS max1 = MAX(agg_metric) WHERE x <= 3,
3192+
max2 = MAX(agg_metric),
3193+
max3 = MAX(x),
3194+
max4 = MAX(x) WHERE x > 3
31863195
;
31873196

3188-
max:double
3189-
3.0
3197+
max1:double | max2:double | max3:integer | max4:integer
3198+
3.0 | 5.0 | 5 | 5
31903199
;
31913200

31923201
minWithConditions
@@ -3196,11 +3205,14 @@ required_capability: aggregate_metric_double_convert_to
31963205
ROW x = [1, 2, 3, 4, 5]
31973206
| MV_EXPAND x
31983207
| EVAL agg_metric = TO_AGGREGATE_METRIC_DOUBLE(x)
3199-
| STATS min = MIN(agg_metric) WHERE x >= 3
3208+
| STATS min1 = MIN(agg_metric) WHERE x <= 3,
3209+
min2 = MIN(agg_metric),
3210+
min3 = MIN(x),
3211+
min4 = MIN(x) WHERE x > 3
32003212
;
32013213

3202-
min:double
3203-
3.0
3214+
min1:double | min2:double | min3:integer | min4:integer
3215+
1.0 | 1.0 | 1 | 4
32043216
;
32053217

32063218
countWithConditions
@@ -3211,14 +3223,17 @@ ROW x = [1, 2, 3, 4, 5]
32113223
| MV_EXPAND x
32123224
| EVAL agg_metric = TO_AGGREGATE_METRIC_DOUBLE(x)
32133225
| STATS count1 = COUNT(x) WHERE x >= 3,
3214-
count2 = COUNT(agg_metric) WHERE x >=3,
3215-
count3 = COUNT(4) WHERE x >= 3,
3216-
count4 = COUNT(*) WHERE x >= 3,
3217-
count5 = COUNT([1,2,3]) WHERE x >= 3
3226+
count2 = COUNT(x),
3227+
count3 = COUNT(agg_metric),
3228+
count4 = COUNT(agg_metric) WHERE x >=3,
3229+
count5 = COUNT(4) WHERE x >= 3,
3230+
count6 = COUNT(*) WHERE x >= 3,
3231+
count7 = COUNT([1,2,3]) WHERE x >= 3,
3232+
count8 = COUNT([1,2,3])
32183233
;
32193234

3220-
count1:long | count2:long | count3:long | count4:long | count5:long
3221-
3 | 3 | 3 | 3 | 9
3235+
count1:long | count2:long | count3:long | count4:long | count5:long | count6:long | count7:long | count8:long
3236+
3 | 5 | 5 | 3 | 3 | 3 | 9 | 15
32223237
;
32233238

32243239
countDistinctWithConditions
@@ -3228,11 +3243,13 @@ ROW x = [1, 2, 3, 4, 5]
32283243
| MV_EXPAND x
32293244
| EVAL agg_metric = TO_AGGREGATE_METRIC_DOUBLE(x)
32303245
| STATS count1 = COUNT_DISTINCT(x) WHERE x <= 3,
3231-
count2 = COUNT_DISTINCT(1) WHERE x <= 3
3246+
count2 = COUNT_DISTINCT(x),
3247+
count3 = COUNT_DISTINCT(1) WHERE x <= 3,
3248+
count4 = COUNT_DISTINCT(1)
32323249
;
32333250

3234-
count1:long | count2:long
3235-
3 | 1
3251+
count1:long | count2:long | count3:long | count4:long
3252+
3 | 5 | 1 | 1
32363253
;
32373254

32383255
avgWithConditions
@@ -3243,24 +3260,26 @@ ROW x = [1, 2, 3, 4, 5]
32433260
| MV_EXPAND x
32443261
| EVAL agg_metric = TO_AGGREGATE_METRIC_DOUBLE(x)
32453262
| STATS avg1 = AVG(x) WHERE x <= 3,
3246-
avg2 = AVG(agg_metric) WHERE x <=3
3263+
avg2 = AVG(x),
3264+
avg3 = AVG(agg_metric) WHERE x <=3,
3265+
avg4 = AVG(agg_metric)
32473266
;
32483267

3249-
avg1:double | avg2:double
3250-
2.0 | 2.0
3268+
avg1:double | avg2:double | avg3:double | avg4:double
3269+
2.0 | 3.0 | 2.0 | 3.0
32513270
;
32523271

32533272
percentileWithConditions
32543273
required_capability: stats_with_filtered_surrogate_fixed
32553274

32563275
ROW x = [1, 2, 3, 4, 5]
32573276
| MV_EXPAND x
3258-
| STATS percentile1 = PERCENTILE(x, 100) WHERE x <= 3,
3259-
percentile2 = PERCENTILE(x, 100)
3277+
| STATS percentile1 = PERCENTILE(x, 50) WHERE x <= 3,
3278+
percentile2 = PERCENTILE(x, 50)
32603279
;
32613280

32623281
percentile1:double | percentile2:double
3263-
3.0 | 5.0
3282+
2.0 | 3.0
32643283
;
32653284

32663285
medianWithConditions
@@ -3270,25 +3289,27 @@ ROW x = [1, 2, 3, 4, 5]
32703289
| MV_EXPAND x
32713290
| STATS median1 = MEDIAN(x) WHERE x <= 3,
32723291
median2 = MEDIAN(x),
3273-
median3 = MEDIAN([5,6,7,8,9]) WHERE x <= 3
3292+
median3 = MEDIAN([5,6,7,8,9]) WHERE x <= 3,
3293+
median4 = MEDIAN([5,6,7,8,9])
32743294
;
32753295

3276-
median1:double | median2:double | median3:double
3277-
2.0 | 3.0 | 7.0
3296+
median1:double | median2:double | median3:double | median4:double
3297+
2.0 | 3.0 | 7.0 | 7.0
32783298
;
32793299

32803300
medianAbsoluteDeviationWithConditions
32813301
required_capability: stats_with_filtered_surrogate_fixed
32823302

32833303
ROW x = [1, 2, 3, 4, 5]
32843304
| MV_EXPAND x
3285-
| STATS median_deviation1 = MEDIAN_ABSOLUTE_DEVIATION(x) WHERE x <= 3,
3286-
median_deviation2 = MEDIAN_ABSOLUTE_DEVIATION(x),
3287-
median_deviation3 = MEDIAN_ABSOLUTE_DEVIATION([5,6,7,8,9]) WHERE x <= 3
3305+
| STATS median_dev1 = MEDIAN_ABSOLUTE_DEVIATION(x) WHERE x <= 3,
3306+
median_dev2 = MEDIAN_ABSOLUTE_DEVIATION(x),
3307+
median_dev3 = MEDIAN_ABSOLUTE_DEVIATION([5,6,7,8,9]) WHERE x <= 3,
3308+
median_dev4 = MEDIAN_ABSOLUTE_DEVIATION([5,6,7,8,9])
32883309
;
32893310

3290-
median_deviation1:double | median_deviation2:double | median_deviation3:double
3291-
1.0 | 1.0 | 1.0
3311+
median_dev1:double | median_dev2:double | median_dev3:double | median_dev4:double
3312+
1.0 | 1.0 | 1.0 | 1.0
32923313
;
32933314

32943315
topWithConditions

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,9 +1470,10 @@ public enum Cap {
14701470
FN_PRESENT,
14711471

14721472
/**
1473-
* Bugfix for STATS {{expression}} WHERE {{condition}} when the expression
1474-
* is replaced by something else on planning
1475-
* e.g. STATS SUM(1) WHERE x==3 is replaced by MV_SUM(const)*COUNT(* WHERE x == 3).
1473+
* Bugfix for STATS {{expression}} WHERE {{condition}} when the
1474+
* expression is replaced by something else on planning
1475+
* e.g. STATS SUM(1) WHERE x==3 is replaced by
1476+
* MV_SUM(const)*COUNT(* WHERE x == 3).
14761477
*/
14771478
STATS_WITH_FILTERED_SURROGATE_FIXED,
14781479

0 commit comments

Comments
 (0)