postgres.git / summary / log / commit / refs
commit 2daf4664ce5402e4bd5bda24bf52716137336ad2
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Date: Fri Jan 06 11:16:53 2023 +0000
First released in: 16.0, 11.19, 12.14, 13.10, 14.7, 15.2
Fix tab completion of ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA.
The ALTER DATABASE|FUNCTION|PROCEDURE|ROLE|ROUTINE|USER ... SET <name>
case in psql tab completion failed to exclude <name> = "SCHEMA", which
caused ALTER FUNCTION|PROCEDURE|ROUTINE ... SET SCHEMA to complete
with "FROM CURRENT" and "TO", which won't work.
Fix that, so that those cases now complete with the list of schemas,
like other ALTER ... SET SCHEMA commands.
Noticed while testing the recent patch to improve tab completion for
ALTER FUNCTION/PROCEDURE/ROUTINE, but this is not directly related to
that patch. Rather, this is a long-standing bug, so back-patch to all
supported branches.
Discussion: https://postgr.es/m/CALDaNm0s7GQmkLP_mx5Cvk=UzYMnjhPmXBxU8DsHEunFbC5sTg@mail.gmail.com
src/bin/psql/tab-complete.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index f84906b5311..f6e7011c21d 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -4336,11 +4336,12 @@ psql_completion(const char *text, int start, int end)
COMPLETE_WITH("TO");
/*
- * Complete ALTER DATABASE|FUNCTION||PROCEDURE|ROLE|ROUTINE|USER ... SET
+ * Complete ALTER DATABASE|FUNCTION|PROCEDURE|ROLE|ROUTINE|USER ... SET
* <name>
*/
else if (HeadMatches("ALTER", "DATABASE|FUNCTION|PROCEDURE|ROLE|ROUTINE|USER") &&
- TailMatches("SET", MatchAny))
+ TailMatches("SET", MatchAny) &&
+ !TailMatches("SCHEMA"))
COMPLETE_WITH("FROM CURRENT", "TO");
/*
[parent: f60acde86998]