druid icon indicating copy to clipboard operation
druid copied to clipboard

Workbench autocomplete should be smater

Open JRobTS opened this issue 10 months ago • 3 comments

Description

The Druid Console Workbench will auto-complete in the wrong contexts and should be smarter.

I propose the following changes:

  • "enter" shouldn't trigger an auto-complete
  • Numerals should not be candidate for autocompletion
  • Inside of double quote "" blocks, function names should not be candidate for autocompletion: datasource and field names only
  • Inside of single quote '' blocks, should not be candidate for autocompletion
  • Other common / completed phrases such as NULL and "count" should not be candidate for autocompletion

Motivation

Make working with Workbench less annoying.

For example, "1" will auto-complete as "LOG10" on (enter). This is extremely annoying as it's pretty typical to write a query that ends in GROUP BY 1; only to have auto-complete change it to GROUP BY LOG10.

Other annoyances include when writing inside of a string block ("" or '') the auto-completer will try to fill in function names. AND subject = 'foo' will auto-complete to AND subject = 'FLOOR'

Datasource and field names should be within context for double quotes "", but not function names. And I can't think of any reason to auto-complete when inside of single quotes '' (maybe local context)

More examples of auto-complete annoyances:

  • IS NOT NULL auto-completes to IS NOT NULLIF
  • SUM("count") auto-completes to SUM("COUNT")

JRobTS avatar Jan 15 '25 05:01 JRobTS

I'm not familiar with how the autocomplete is coded, in particular I'm not sure how much control we have over it (vs. it coming in as part of a component we're importing). Perhaps @vogievetsky has a comment on that.

As to the specifics, some 2¢:

  • I have also been bit by the autocompleting within single quotes and agree it doesn't seem that useful.
  • Perhaps autocompleting on tab only rather than tab and enter would be an improvement. I'd be interested in trying it at least.
  • I haven't personally experienced 1 autocompleting as LOG10 (it doesn't autocomplete at all when I tried it just now on a relatively recent build-- maybe something changed).

gianm avatar Apr 01 '25 22:04 gianm

I should note I'm using Apache Druid 29.0.0

I agree with autocompleting on tab only

Tested again and even SELECT 1 recommends LOG10 Image

JRobTS avatar Apr 28 '25 17:04 JRobTS

Sorry it took me a while to get around to responding to this issue. I somehow missed it. I am planning on upgrading the autocomplete based on the feedback in this issue. Here are my thoughts:

Numerals should not be candidate for autocompletion

100% agree. This was actually fixed in https://github.com/apache/druid/pull/16586/files#diff-71a7ad6a5ecf4d541e559dcff8be182e9cdbf75f353284272b36e8bf6542e22cR190 so if you upgrade to Druid 31 or later this is done.

Inside of double quote "" blocks, function names should not be candidate for autocompletion: datasource and field names only Inside of single quote '' blocks, should not be candidate for autocompletion

Agree. That will be a huge improvement. I am working on his right now as a direct result of this issue.

Other common / completed phrases such as NULL and "count" should not be candidate for autocompletion

I think this can be addressed by tweaking the scores of the completions. Like a full match should always be the highest score. Specifically I 100% agree that typing IS NOT NULL (Enter) should not autocomplete to IS NOT NULLIF in this case it would be solved if the NULL completion was scored higher due to being a perfect match.

"enter" shouldn't trigger an auto-complete

This one I do not agree with. Enter appears to be a standard autocomplete trigger. Specifically it is a trigger in WebStorm/InteliJ, VSCode, and even in this window where I am typing right now @JRobTS (I just typed your handle by typing @, J, (enter)). I think you are saying that because of all the other issues in autocomplete. Let's see if we can make autocomplete work so well that you won't even mind having Enter be a trigger. Challenge accepted.

vogievetsky avatar May 24 '25 13:05 vogievetsky