[ES|QL] Add validation coverage for wildcards on commands#170014
[ES|QL] Add validation coverage for wildcards on commands#170014dej611 merged 12 commits intoelastic:feature/esql-validationfrom
Conversation
|
Pinging @elastic/kibana-visualizations (Team:Visualizations) |
|
All your examples work great! However, I get a validation error when dropping with the wildcard at the first, even though it successfully drops the field. Same thing happens if the wildcard is in the middle of the term. Screen.Recording.2023-10-30.at.1.14.18.PM.mov |
|
Good findings. I've never seen such usage in general. I'll try to add them as well. |
|
@drewdaemon addressed the issues with b54e6f2 |
drewdaemon
left a comment
There was a problem hiding this comment.
Works great! I had one question about the necessity of the skipCommonValidation flag.
I'm approving but I added the docs label because I think it would be nice to get their feedback on the validation messages.
| params: [{ name: 'separator', type: 'string' }], | ||
| }, | ||
| optional: true, | ||
| skipCommonValidation: true, // tell the validation engine to use only the validate function here |
There was a problem hiding this comment.
Is there any reason we can't just use the presence of the validate method to decide (i.e. a clean override)?
There was a problem hiding this comment.
Initially that was the design, but then I rolled back to this other decision.
There are several reasons for this change:
- shared validation code is quite a big surface and replicate it every time to just add a tiny little bit of extra ad-hoc validation doesn't make sense
- therefore I want a way to add only this extra validation bit on top of the common one
- ideally I would like to have a "positive" flag (something like
commonValidation: true) but I've only few cases (one so far) where this extra bit is required and adding a "negative" ("skipCommonValidation") was the less intrusive one
Another design approach could be to rename validate as extraValidation to semantically avoid this flag + callback confusion.
I've planned a copy review of all messages once all the validation has been merged into the feature branch. |
💚 Build Succeeded
Metrics [docs]Async chunks
Page load bundle
History
To update your PR or re-run it, just comment with: |
## Summary Fixes #166242 , #166876, #166173 , part of #166092, #166084 List of tasks: * [x] AST work ( #166185 ) * [x] Basic validate work ( #166185 ) * [x] Hover feature ( #166185 ) * [x] Initial autocomplete work with new AST ( #166185 ) * Complete validation feature for MVP * [x] wildcards support ( #170014 ) * [x] remote index validation support ( #171996 ) * [x] wildcard support as `count` argument ( #172054 ) * [x] Aggressive caching for field queries: * cache as much as possible the `FROM` queries - possible clear the cache every 10/15 minutes? * do not fire a query when code == submitted code * cache as much as possible the custom `FROM` built from `ENRICH` policies - same clear policy as above * [x] Add unsupported fields warning messages * [x] Notify usage of `project` command with deprecation `warning` * Complete autocomplete work ( #171664 ) * [x] `stats` * [x] `where` * [x] `eval` * `math syntax` * [x] Aggressive cache for fields queries? ( #171866 ) * [x] Fix when cursor is not at the end position ( #172060 ) * [x] Revisit copy messages * Label Kibana-only messages * [x] Extend hover feature ( #171940 ) * [x] Disable editor query highlight for warnings ( #171968 ) * Fix editor highlight with new grammar * [x] on multi-line ( #172080 ) * [x] for functions ( #172287 ) ## Release notes Enhance ES|QL query editing experience with client side validation. Enhance ES|QL suggestions experience with more in context suggestions leveraging field and variable types. Show meta informations on ES|QL query hover on policy names. Show function signature on ES|QL query hover on function text. ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co> Co-authored-by: Abdon Pijpelink <abdon.pijpelink@elastic.co>
Summary
This PR extends the validation logic to cover also wildcase scenarios for various commands:
dropandkeep:drop *is marked as error:fieldsandvariablesfor wildcard names, and errors are reported if no match is found:drop @timestampwith a warning:Notes:
by*tes*bytesandbytes*will all matchbytesfrom my tests on ES, therefore the validation will make them pass as valid if there's abytesfield.Checklist
Delete any items that are not applicable to this PR.