From aa68d4177a3393f313c715a67b42b35cebba543e Mon Sep 17 00:00:00 2001 From: Quynh Nguyen Date: Mon, 29 Jul 2024 15:34:43 -0500 Subject: [PATCH 1/3] Update push getFinalSuggestions to suggestions for stats by --- .../src/autocomplete/autocomplete.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts index 45c0563ac833ed..25a15bb5efc908 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts @@ -1565,7 +1565,7 @@ async function getOptionArgsSuggestions( if (command.name === 'stats') { suggestions.push( ...(await getFieldsOrFunctionsSuggestions( - ['column'], + ['any'], command.name, option.name, getFieldsByType, @@ -1575,7 +1575,6 @@ async function getOptionArgsSuggestions( } )) ); - const argDef = optionDef?.signature.params[argIndex]; const nodeArgType = extractFinalTypeFromArg(nodeArg, references); @@ -1598,6 +1597,14 @@ async function getOptionArgsSuggestions( ); } } + + if (option.name === 'by' && !option.incomplete) { + suggestions.push( + ...getFinalSuggestions({ + comma: optionDef?.signature.multipleParams, + }) + ); + } } if (optionDef) { From 7e09343964938d8eaf2be7c7b2b0a1ca4d8c7d3a Mon Sep 17 00:00:00 2001 From: Quynh Nguyen Date: Mon, 29 Jul 2024 22:25:59 -0500 Subject: [PATCH 2/3] Update --- .../src/autocomplete/autocomplete.ts | 73 ++++++++----------- .../esql_validation_meta_tests.json | 15 ---- 2 files changed, 32 insertions(+), 56 deletions(-) diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts index a5783d33406ae9..5b0637d849096f 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts @@ -1592,7 +1592,7 @@ async function getOptionArgsSuggestions( if (command.name === 'stats') { suggestions.push( ...(await getFieldsOrFunctionsSuggestions( - ['any'], + ['column'], command.name, option.name, getFieldsByType, @@ -1602,6 +1602,7 @@ async function getOptionArgsSuggestions( } )) ); + const argDef = optionDef?.signature.params[argIndex]; const nodeArgType = extractFinalTypeFromArg(nodeArg, references); @@ -1624,52 +1625,42 @@ async function getOptionArgsSuggestions( ); } } + } - if (option.name === 'by' && !option.incomplete) { + if (optionDef) { + const argDefIndex = optionDef.signature.multipleParams + ? 0 + : Math.max(option.args.length - 1, 0); + const types = [optionDef.signature.params[argDefIndex].type].filter(nonNullable); + // If it's a complete expression then proposed some final suggestions + // A complete expression is either a function or a column: