Skip to content

Commit 927d7bb

Browse files
committed
Improve tab completion for CREATE TRIGGER.
This includes support for the new REFERENCING clause.
1 parent 8c48375 commit 927d7bb

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/bin/psql/tab-complete.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2209,9 +2209,43 @@ psql_completion(const char *text, int start, int end)
22092209
/* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
22102210
else if (TailMatches7("CREATE", "TRIGGER", MatchAny, "INSTEAD", "OF", MatchAny, "ON"))
22112211
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);
2212+
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches2("ON", MatchAny))
2213+
COMPLETE_WITH_LIST7("NOT DEFERRABLE", "DEFERRABLE", "INITIALLY",
2214+
"REFERENCING", "FOR", "WHEN (", "EXECUTE PROCEDURE");
2215+
else if (HeadMatches2("CREATE", "TRIGGER") &&
2216+
(TailMatches1("DEFERRABLE") || TailMatches2("INITIALLY", "IMMEDIATE|DEFERRED")))
2217+
COMPLETE_WITH_LIST4("REFERENCING", "FOR", "WHEN (", "EXECUTE PROCEDURE");
2218+
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches1("REFERENCING"))
2219+
COMPLETE_WITH_LIST2("OLD TABLE", "NEW TABLE");
2220+
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches2("OLD|NEW", "TABLE"))
2221+
COMPLETE_WITH_CONST("AS");
2222+
else if (HeadMatches2("CREATE", "TRIGGER") &&
2223+
(TailMatches5("REFERENCING", "OLD", "TABLE", "AS", MatchAny) ||
2224+
TailMatches4("REFERENCING", "OLD", "TABLE", MatchAny)))
2225+
COMPLETE_WITH_LIST4("NEW TABLE", "FOR", "WHEN (", "EXECUTE PROCEDURE");
2226+
else if (HeadMatches2("CREATE", "TRIGGER") &&
2227+
(TailMatches5("REFERENCING", "NEW", "TABLE", "AS", MatchAny) ||
2228+
TailMatches4("REFERENCING", "NEW", "TABLE", MatchAny)))
2229+
COMPLETE_WITH_LIST4("OLD TABLE", "FOR", "WHEN (", "EXECUTE PROCEDURE");
2230+
else if (HeadMatches2("CREATE", "TRIGGER") &&
2231+
(TailMatches9("REFERENCING", "OLD|NEW", "TABLE", "AS", MatchAny, "OLD|NEW", "TABLE", "AS", MatchAny) ||
2232+
TailMatches8("REFERENCING", "OLD|NEW", "TABLE", MatchAny, "OLD|NEW", "TABLE", "AS", MatchAny) ||
2233+
TailMatches8("REFERENCING", "OLD|NEW", "TABLE", "AS", MatchAny, "OLD|NEW", "TABLE", MatchAny) ||
2234+
TailMatches7("REFERENCING", "OLD|NEW", "TABLE", MatchAny, "OLD|NEW", "TABLE", MatchAny)))
2235+
COMPLETE_WITH_LIST3("FOR", "WHEN (", "EXECUTE PROCEDURE");
2236+
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches1("FOR"))
2237+
COMPLETE_WITH_LIST3("EACH", "ROW", "STATEMENT");
2238+
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches2("FOR", "EACH"))
2239+
COMPLETE_WITH_LIST2("ROW", "STATEMENT");
2240+
else if (HeadMatches2("CREATE", "TRIGGER") &&
2241+
(TailMatches3("FOR", "EACH", "ROW|STATEMENT") ||
2242+
TailMatches2("FOR", "ROW|STATEMENT")))
2243+
COMPLETE_WITH_LIST2("WHEN (", "EXECUTE PROCEDURE");
22122244
/* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */
22132245
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches1("EXECUTE"))
22142246
COMPLETE_WITH_CONST("PROCEDURE");
2247+
else if (HeadMatches2("CREATE", "TRIGGER") && TailMatches2("EXECUTE", "PROCEDURE"))
2248+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL);
22152249

22162250
/* CREATE ROLE,USER,GROUP <name> */
22172251
else if (Matches3("CREATE", "ROLE|GROUP|USER", MatchAny) &&

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy