Dagfinn Ilmari Mannsåker <ilm...@ilmari.org> writes: > Michael Paquier <mich...@paquier.xyz> writes: > >> On Sat, Apr 15, 2023 at 11:06:25AM +0900, Michael Paquier wrote: >>> Thanks, I'll look at it. >> >> + else if (Matches("CREATE", "SCHEMA", "AUTHORIZATION", MatchAny) || >> + Matches("CREATE", "SCHEMA", MatchAny, "AUTHORIZATION", >> MatchAny)) >> + COMPLETE_WITH("CREATE", "GRANT"); >> + else if (Matches("CREATE", "SCHEMA", MatchAny)) >> + COMPLETE_WITH("AUTHORIZATION", "CREATE", "GRANT"); >> >> I had this grammar under my eyes a few days ago for a different patch, >> and there are much more objects types that can be appended to a CREATE >> SCHEMA, like triggers, sequences, tables or views, so this is >> incomplete, isn't it? > > 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.
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? - ilmari