diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands_helpers.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands_helpers.ts index e38533fbc9a5f..c4854fdea70e0 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands_helpers.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands_helpers.ts @@ -49,12 +49,17 @@ 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 ( isLiteralItem(subArg) || isAggregation(subArg) || (isNotAnAggregation(subArg) ? checkFunctionContent(subArg) : false) - ); + ); + }); } export function checkAggExistence(arg: ESQLFunction): boolean { diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/test_suites/validation.command.stats.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/test_suites/validation.command.stats.ts index edd5e7fa75e15..2a7fdb1607583 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/test_suites/validation.command.stats.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/test_suites/validation.command.stats.ts @@ -79,6 +79,11 @@ export const validationStatsCommandTestSuite = (setup: helpers.Setup) => { await expectErrors('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 + await expectErrors( + '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', async () => {