Hi, Tab completion for ALTER FUNCTION/PROCEDURE/ROUTINE action was missing, this patch adds the tab completion for the same.
Regards, Vignesh
From 4b0473799a0d6af126ccd3d7802e5d0cbb83b944 Mon Sep 17 00:00:00 2001 From: "vignesh.c" <vignes...@gmail.com> Date: Thu, 27 Oct 2022 14:00:46 +0530 Subject: [PATCH v1] Tab completion for ALTER FUNCTION/PROCEDURE/ROUTINE. Tab completion for ALTER FUNCTION/PROCEDURE/ROUTINE action was missing, added the tab completion for the same. --- src/bin/psql/tab-complete.c | 48 +++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index a64571215b..bf3c5a7aae 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -1805,12 +1805,52 @@ psql_completion(const char *text, int start, int end) else COMPLETE_WITH_FUNCTION_ARG(prev2_wd); } - /* ALTER FUNCTION,PROCEDURE,ROUTINE <name> (...) */ - else if (Matches("ALTER", "FUNCTION|PROCEDURE|ROUTINE", MatchAny, MatchAny)) + /* ALTER FUNCTION <name> (...) */ + else if (Matches("ALTER", "FUNCTION", MatchAny, MatchAny)) { if (ends_with(prev_wd, ')')) - COMPLETE_WITH("OWNER TO", "RENAME TO", "SET SCHEMA", - "DEPENDS ON EXTENSION", "NO DEPENDS ON EXTENSION"); + COMPLETE_WITH("CALLED ON NULL INPUT", "COST", + "DEPENDS ON EXTENSION", "EXTERNAL SECURITY", + "IMMUTABLE", "LEAKPROOF", "NO DEPENDS ON EXTENSION", + "NOT LEAKPROOF", "OWNER TO", "PARALLEL", "RENAME TO", + "RETURNS NULL ON NULL INPUT ", "ROWS", "SECURITY", + "SET SCHEMA", "STABLE", "STRICT", "SUPPORT", + "VOLATILE"); + else + COMPLETE_WITH_FUNCTION_ARG(prev2_wd); + } + /* ALTER FUNCTION|ROUTINE <name> (...) PARALLEL */ + else if (Matches("ALTER", "FUNCTION|ROUTINE", MatchAny, MatchAny, + "PARALLEL")) + COMPLETE_WITH("RESTRICTED", "SAFE", "UNSAFE"); + /* + * ALTER FUNCTION|PROCEDURE|ROUTINE <name> (...) + * [EXTERNAL] SECURITY + */ + else if (Matches("ALTER", "FUNCTION|PROCEDURE|ROUTINE", MatchAny, MatchAny, + "SECURITY") || + Matches("ALTER", "FUNCTION|PROCEDURE|ROUTINE", MatchAny, MatchAny, + "EXTERNAL", "SECURITY")) + COMPLETE_WITH("DEFINER" ,"INVOKER"); + /* ALTER PROCEDURE <name> (...) */ + else if (Matches("ALTER", "PROCEDURE", MatchAny, MatchAny)) + { + if (ends_with(prev_wd, ')')) + COMPLETE_WITH("DEPENDS ON EXTENSION", "EXTERNAL SECURITY", + "NO DEPENDS ON EXTENSION", "OWNER TO", "RENAME TO", + "SECURITY", "SET SCHEMA"); + else + COMPLETE_WITH_FUNCTION_ARG(prev2_wd); + } + /* ALTER ROUTINE <name> (...) */ + else if (Matches("ALTER", "ROUTINE", MatchAny, MatchAny)) + { + if (ends_with(prev_wd, ')')) + COMPLETE_WITH("COST", "DEPENDS ON EXTENSION", "EXTERNAL SECURITY", + "IMMUTABLE", "LEAKPROOF", "NO DEPENDS ON EXTENSION", + "NOT LEAKPROOF", "OWNER TO", "PARALLEL", "RENAME TO", + "ROWS", "SECURITY", "SET SCHEMA", "STABLE", + "VOLATILE"); else COMPLETE_WITH_FUNCTION_ARG(prev2_wd); } -- 2.32.0