Daniel Gustafsson <daniel@yesql.se> writes:
> While testing a patch I fat-fingered a CREATE DATABASE statement by tab
> completing *after* the semicolon, with no space between the objname and
> semicolon. The below options were presented, which at this point aren't really
> applicable:
>
> db=# create database foo;
> ALLOW_CONNECTIONS ENCODING LC_COLLATE LOCALE TABLESPACE
> CONNECTION LIMIT IS_TEMPLATE LC_CTYPE OWNER TEMPLATE
>
> DROP DATABASE has a similar tab completion which makes about as much sense:
>
> db=# drop database foo;WITH (
>
> Checking prev_wd for not ending with ';' as per the attached makes "objname;"
> behave like "objname ;". Is there a reason for not doing that which I'm
> missing? I didn't check for others, but if this seems reasonable I'll go
> through to find any other similar cases.
The same applies to any completion after a MatchAny that ends in a any
of the WORD_BREAKS characters (except whitespace and () which are
handled specially).
#define WORD_BREAKS "\t\n@$><=;|&{() "
IMO a fix should be more principled than just special-casing semicolon
and CREATE TABLE. Maybe get_previous_words() should stop when it sees
an unquoted semicolon?
- ilmari