aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2018-10-26 13:46:20 +0900
committerMichael Paquier <michael@paquier.xyz>2018-10-26 13:46:20 +0900
commit5953c99697621174f50aa219a3cd457212968268 (patch)
tree823ed540aefbe5d7947d6e94ab2a4003b556158a
parent292ef6e2778afb3ecea250fc50326587543ae144 (diff)
downloadpostgresql-5953c99697621174f50aa219a3cd457212968268.tar.gz
postgresql-5953c99697621174f50aa219a3cd457212968268.zip
Improve tab completion of CREATE EVENT TRIGGER in psql
This adds tab completion of the clauses WHEN and EXECUTE FUNCTION|PROCEDURE clauses to CREATE EVENT TRIGGER, similar to CREATE TRIGGER in the previous commit. This has version-dependent logic so as FUNCTION is chosen over PROCEDURE for 11 and newer versions. Author: Dagfinn Ilmari Mannsåker Reviewed-by: Tom Lane, Michael Paquier Discussion: https://postgr.es/m/d8jmur4q4yc.fsf@dalvik.ping.uio.no
-rw-r--r--src/bin/psql/tab-complete.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 42005740798..a980f92e11b 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -2608,6 +2608,29 @@ psql_completion(const char *text, int start, int end)
/* Complete CREATE EVENT TRIGGER <name> ON with event_type */
else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny, "ON"))
COMPLETE_WITH("ddl_command_start", "ddl_command_end", "sql_drop");
+ /*
+ * Complete CREATE EVENT TRIGGER <name> ON <event_type>. EXECUTE FUNCTION
+ * is the recommended grammar instead of EXECUTE PROCEDURE in version 11
+ * and upwards.
+ */
+ else if (Matches("CREATE", "EVENT", "TRIGGER", MatchAny, "ON", MatchAny))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("WHEN TAG IN (", "EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("WHEN TAG IN (", "EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "EVENT", "TRIGGER") &&
+ TailMatches("WHEN|AND", MatchAny, "IN", "(*)"))
+ {
+ if (pset.sversion >= 110000)
+ COMPLETE_WITH("EXECUTE FUNCTION");
+ else
+ COMPLETE_WITH("EXECUTE PROCEDURE");
+ }
+ else if (HeadMatches("CREATE", "EVENT", "TRIGGER") &&
+ TailMatches("EXECUTE", "FUNCTION|PROCEDURE"))
+ COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions, NULL);
/* DEALLOCATE */
else if (Matches("DEALLOCATE"))