@@ -2465,49 +2465,94 @@ psql_completion(const char *text, int start, int end)
24652465
24662466 /*
24672467 * complete CREATE TRIGGER <name> BEFORE,AFTER event ON with a list of
2468- * tables
2468+ * tables. EXECUTE FUNCTION is the recommended grammar instead of EXECUTE
2469+ * PROCEDURE in version 11 and upwards.
24692470 */
24702471 else if (TailMatches ("CREATE" , "TRIGGER" , MatchAny , "BEFORE|AFTER" , MatchAny , "ON" ))
24712472 COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables , NULL );
24722473 /* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
24732474 else if (TailMatches ("CREATE" , "TRIGGER" , MatchAny , "INSTEAD" , "OF" , MatchAny , "ON" ))
24742475 COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_views , NULL );
24752476 else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("ON" , MatchAny ))
2476- COMPLETE_WITH ("NOT DEFERRABLE" , "DEFERRABLE" , "INITIALLY" ,
2477- "REFERENCING" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2477+ {
2478+ if (pset .sversion >= 110000 )
2479+ COMPLETE_WITH ("NOT DEFERRABLE" , "DEFERRABLE" , "INITIALLY" ,
2480+ "REFERENCING" , "FOR" , "WHEN (" , "EXECUTE FUNCTION" );
2481+ else
2482+ COMPLETE_WITH ("NOT DEFERRABLE" , "DEFERRABLE" , "INITIALLY" ,
2483+ "REFERENCING" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2484+ }
24782485 else if (HeadMatches ("CREATE" , "TRIGGER" ) &&
24792486 (TailMatches ("DEFERRABLE" ) || TailMatches ("INITIALLY" , "IMMEDIATE|DEFERRED" )))
2480- COMPLETE_WITH ("REFERENCING" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2487+ {
2488+ if (pset .sversion >= 110000 )
2489+ COMPLETE_WITH ("REFERENCING" , "FOR" , "WHEN (" , "EXECUTE FUNCTION" );
2490+ else
2491+ COMPLETE_WITH ("REFERENCING" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2492+ }
24812493 else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("REFERENCING" ))
24822494 COMPLETE_WITH ("OLD TABLE" , "NEW TABLE" );
24832495 else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("OLD|NEW" , "TABLE" ))
24842496 COMPLETE_WITH ("AS" );
24852497 else if (HeadMatches ("CREATE" , "TRIGGER" ) &&
24862498 (TailMatches ("REFERENCING" , "OLD" , "TABLE" , "AS" , MatchAny ) ||
24872499 TailMatches ("REFERENCING" , "OLD" , "TABLE" , MatchAny )))
2488- COMPLETE_WITH ("NEW TABLE" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2500+ {
2501+ if (pset .sversion >= 110000 )
2502+ COMPLETE_WITH ("NEW TABLE" , "FOR" , "WHEN (" , "EXECUTE FUNCTION" );
2503+ else
2504+ COMPLETE_WITH ("NEW TABLE" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2505+ }
24892506 else if (HeadMatches ("CREATE" , "TRIGGER" ) &&
24902507 (TailMatches ("REFERENCING" , "NEW" , "TABLE" , "AS" , MatchAny ) ||
24912508 TailMatches ("REFERENCING" , "NEW" , "TABLE" , MatchAny )))
2492- COMPLETE_WITH ("OLD TABLE" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2509+ {
2510+ if (pset .sversion >= 110000 )
2511+ COMPLETE_WITH ("OLD TABLE" , "FOR" , "WHEN (" , "EXECUTE FUNCTION" );
2512+ else
2513+ COMPLETE_WITH ("OLD TABLE" , "FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2514+ }
24932515 else if (HeadMatches ("CREATE" , "TRIGGER" ) &&
24942516 (TailMatches ("REFERENCING" , "OLD|NEW" , "TABLE" , "AS" , MatchAny , "OLD|NEW" , "TABLE" , "AS" , MatchAny ) ||
24952517 TailMatches ("REFERENCING" , "OLD|NEW" , "TABLE" , MatchAny , "OLD|NEW" , "TABLE" , "AS" , MatchAny ) ||
24962518 TailMatches ("REFERENCING" , "OLD|NEW" , "TABLE" , "AS" , MatchAny , "OLD|NEW" , "TABLE" , MatchAny ) ||
24972519 TailMatches ("REFERENCING" , "OLD|NEW" , "TABLE" , MatchAny , "OLD|NEW" , "TABLE" , MatchAny )))
2498- COMPLETE_WITH ("FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2520+ {
2521+ if (pset .sversion >= 110000 )
2522+ COMPLETE_WITH ("FOR" , "WHEN (" , "EXECUTE FUNCTION" );
2523+ else
2524+ COMPLETE_WITH ("FOR" , "WHEN (" , "EXECUTE PROCEDURE" );
2525+ }
24992526 else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("FOR" ))
25002527 COMPLETE_WITH ("EACH" , "ROW" , "STATEMENT" );
25012528 else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("FOR" , "EACH" ))
25022529 COMPLETE_WITH ("ROW" , "STATEMENT" );
25032530 else if (HeadMatches ("CREATE" , "TRIGGER" ) &&
25042531 (TailMatches ("FOR" , "EACH" , "ROW|STATEMENT" ) ||
25052532 TailMatches ("FOR" , "ROW|STATEMENT" )))
2506- COMPLETE_WITH ("WHEN (" , "EXECUTE PROCEDURE" );
2507- /* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */
2533+ {
2534+ if (pset .sversion >= 110000 )
2535+ COMPLETE_WITH ("WHEN (" , "EXECUTE FUNCTION" );
2536+ else
2537+ COMPLETE_WITH ("WHEN (" , "EXECUTE PROCEDURE" );
2538+ }
2539+ else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("WHEN" , "(*)" ))
2540+ {
2541+ if (pset .sversion >= 110000 )
2542+ COMPLETE_WITH ("EXECUTE FUNCTION" );
2543+ else
2544+ COMPLETE_WITH ("EXECUTE PROCEDURE" );
2545+ }
2546+ /* complete CREATE TRIGGER ... EXECUTE with PROCEDURE|FUNCTION */
25082547 else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("EXECUTE" ))
2509- COMPLETE_WITH ("PROCEDURE" );
2510- else if (HeadMatches ("CREATE" , "TRIGGER" ) && TailMatches ("EXECUTE" , "PROCEDURE" ))
2548+ {
2549+ if (pset .sversion >= 110000 )
2550+ COMPLETE_WITH ("FUNCTION" );
2551+ else
2552+ COMPLETE_WITH ("PROCEDURE" );
2553+ }
2554+ else if (HeadMatches ("CREATE" , "TRIGGER" ) &&
2555+ TailMatches ("EXECUTE" , "FUNCTION|PROCEDURE" ))
25112556 COMPLETE_WITH_VERSIONED_SCHEMA_QUERY (Query_for_list_of_functions , NULL );
25122557
25132558/* CREATE ROLE,USER,GROUP <name> */
0 commit comments