Re: psql: tab completion differs on semicolon placement

Поиск
Список
Период
Сортировка
От Dagfinn Ilmari Mannsåker
Тема Re: psql: tab completion differs on semicolon placement
Дата
Msg-id 87wnnbt5dw.fsf@wibble.ilmari.org
обсуждение исходный текст
Ответ на psql: tab completion differs on semicolon placement  (Daniel Gustafsson <daniel@yesql.se>)
Ответы Re: psql: tab completion differs on semicolon placement  (Daniel Gustafsson <daniel@yesql.se>)
Re: psql: tab completion differs on semicolon placement  (David Fetter <david@fetter.org>)
Список pgsql-hackers
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



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Marcos Pegoraro
Дата:
Сообщение: logical replication restrictions
Следующее
От: Andres Freund
Дата:
Сообщение: Re: postgres.h included from relcache.h - but removing it breaks pg_upgrade