On Sat, Dec 12, 2015 at 11:17 AM, Peter Eisentraut <pete...@gmx.net> wrote:
> These two tab completion pieces look strange to me:
>
>     /* If we have CREATE|UNIQUE INDEX <sth> CONCURRENTLY, then add "ON" */
>      else if ((pg_strcasecmp(prev3_wd, "INDEX") == 0 ||
>                pg_strcasecmp(prev2_wd, "INDEX") == 0) &&
>               pg_strcasecmp(prev_wd, "CONCURRENTLY") == 0)
>          COMPLETE_WITH_CONST("ON");
>      /* If we have CREATE|UNIQUE INDEX <sth>, then add "ON" or "CONCURRENTLY" 
> */
>      else if ((pg_strcasecmp(prev3_wd, "CREATE") == 0 ||
>                pg_strcasecmp(prev3_wd, "UNIQUE") == 0) &&
>               pg_strcasecmp(prev2_wd, "INDEX") == 0)
>     {
>          static const char *const list_CREATE_INDEX[] =
>          {"CONCURRENTLY", "ON", NULL};
>
>          COMPLETE_WITH_LIST(list_CREATE_INDEX);
>      }
>
> They appear to support a syntax along the lines of
>
>     CREATE INDEX name CONCURRENTLY
>
> which is not the actual syntax.

Yep. That's visibly a bug introduced by this commit:
commit: 37ec19a15ce452ee94f32ebc3d6a9a45868e82fd
author: Itagaki Takahiro <itagaki.takah...@gmail.com>
date: Wed, 17 Feb 2010 04:09:40 +0000
Support new syntax and improve handling of parentheses in psql tab-completion.

The current implementation is missing a correct completion in a couple
of cases, among them:
-- Should be only ON
=# create index asd
CONCURRENTLY  ON
-- should give list of table
=# create index CONCURRENTLY aaa on
-- Should give ON and list of existing indexes
=# create index concurrently

Please see the attached to address those things (and others) with
extra fixes for a couple of comments.
Regards,
-- 
Michael

Attachment: 20151213_psql_completion_index.patch
Description: binary/octet-stream

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to