diff --git a/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/utils.ts b/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/utils.ts index d4b88c546aa23..1a07785ecf25e 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/utils.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/utils.ts @@ -181,10 +181,15 @@ export function checkFunctionContent(arg: ESQLFunction) { if (isAggregation(arg) || isFunctionOperatorParam(arg)) { return true; } - return (arg as ESQLFunction).args.every( - (subArg): boolean => + return (arg as ESQLFunction).args.every((subArg): boolean => { + // Differentiate between array and non-array arguments + if (Array.isArray(subArg)) { + return subArg.every((item) => checkFunctionContent(item as ESQLFunction)); + } + return ( isLiteral(subArg) || isAggregation(subArg) || (isNotAnAggregation(subArg) ? checkFunctionContent(subArg) : false) - ); + ); + }); } diff --git a/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/validate.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/validate.test.ts index d4daa08cff10b..044255cea0110 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/validate.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/commands_registry/commands/stats/validate.test.ts @@ -91,6 +91,11 @@ describe('STATS Validation', () => { statsExpectErrors('from a_index | STATS abs( doubleField + sum( doubleField )) ', [ 'Cannot combine aggregation and non-aggregation values in [STATS], found [abs(doubleField+sum(doubleField))]', ]); + // This is a valid expression as it is an operation on two aggregation functions + statsExpectErrors( + 'from a_index | STATS sum(doubleField) / (min(doubleField) + max(doubleField)) ', + [] + ); }); test('errors on each aggregation field, which does not contain at least one agg function', () => {