@@ -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