Re: Tab completion for CREATE SCHEMAAUTHORIZATION

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Cc: Suraj Khamkar <khamkarsuraj.b@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2023-05-06T02:58:43Z
Lists: pgsql-hackers
On Tue, May 02, 2023 at 01:19:49PM +0100, Dagfinn Ilmari Mannsåker wrote:
> Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> writes:
>> This is for completing the word CREATE itself after CREATE SCHEMA
>> [[<name>] AUTHORIZATION] <name>.  The things that can come after that
>> are already handled generically earlier in the function:
>>
>> /* CREATE */
>>     /* complete with something you can create */
>>     else if (TailMatches("CREATE"))
>>         matches = rl_completion_matches(text, create_command_generator);
>>
>> create_command_generator uses the words_after_create array, which lists
>> all the things that can be created.

You are right.  I have completely forgotten that this code path would
append everything that supports CREATE for a CREATE SCHEMA command :)

> But, looking closer at the docs, only tables, views, indexes, sequences
> and triggers can be created as part of a CREATE SCHEMA statement. Maybe
> we should add a HeadMatches("CREATE", "SCHEMA") exception in the above?

Yes, it looks like we are going to need an exception and append only
the keywords that are supported, or we will end up recommending mostly
things that are not accepted by the parser.
--
Michael

Commits

  1. Add tab completion for CREATE SCHEMA in psql

  2. psql: improve tab-complete's handling of variant SQL names.