v1-0001-Tab-completion-for-ALTER-FUNCTION-PROCEDURE-ROUTI.patch
text/x-patch
Filename: v1-0001-Tab-completion-for-ALTER-FUNCTION-PROCEDURE-ROUTI.patch
Type: text/x-patch
Part: 0
Patch
Format: format-patch
Series: patch v1-0001
Subject: Tab completion for ALTER FUNCTION/PROCEDURE/ROUTINE.
| File | + | − |
|---|---|---|
| src/bin/psql/tab-complete.c | 44 | 4 |
From 4b0473799a0d6af126ccd3d7802e5d0cbb83b944 Mon Sep 17 00:00:00 2001
From: "vignesh.c" <vignesh21@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