@@ -2775,49 +2775,95 @@ psql_completion(const char *text, int start, int end)
27752775
27762776/*
27772777 * complete CREATE TRIGGER <name> BEFORE,AFTER event ON with a list of
2778- * tables
2778+ * tables. EXECUTE FUNCTION is the recommended grammar instead of EXECUTE
2779+ * PROCEDURE in version 11 and upwards.
27792780 */
27802781else if (TailMatches6 ("CREATE" ,"TRIGGER" ,MatchAny ,"BEFORE|AFTER" ,MatchAny ,"ON" ))
27812782COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables ,NULL );
27822783/* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
27832784else if (TailMatches7 ("CREATE" ,"TRIGGER" ,MatchAny ,"INSTEAD" ,"OF" ,MatchAny ,"ON" ))
27842785COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_views ,NULL );
27852786else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches2 ("ON" ,MatchAny ))
2786- COMPLETE_WITH_LIST7 ("NOT DEFERRABLE" ,"DEFERRABLE" ,"INITIALLY" ,
2787- "REFERENCING" ,"FOR" ,"WHEN (" ,"EXECUTE PROCEDURE" );
2787+ {
2788+ if (pset .sversion >=110000 )
2789+ COMPLETE_WITH_LIST7 ("NOT DEFERRABLE" ,"DEFERRABLE" ,"INITIALLY" ,
2790+ "REFERENCING" ,"FOR" ,"WHEN (" ,
2791+ "EXECUTE FUNCTION" );
2792+ else
2793+ COMPLETE_WITH_LIST7 ("NOT DEFERRABLE" ,"DEFERRABLE" ,"INITIALLY" ,
2794+ "REFERENCING" ,"FOR" ,"WHEN (" ,
2795+ "EXECUTE PROCEDURE" );
2796+ }
27882797else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
27892798 (TailMatches1 ("DEFERRABLE" )|| TailMatches2 ("INITIALLY" ,"IMMEDIATE|DEFERRED" )))
2790- COMPLETE_WITH_LIST4 ("REFERENCING" ,"FOR" ,"WHEN (" ,"EXECUTE PROCEDURE" );
2799+ {
2800+ if (pset .sversion >=110000 )
2801+ COMPLETE_WITH_LIST4 ("REFERENCING" ,"FOR" ,"WHEN (" ,
2802+ "EXECUTE FUNCTION" );
2803+ else
2804+ COMPLETE_WITH_LIST4 ("REFERENCING" ,"FOR" ,"WHEN (" ,
2805+ "EXECUTE PROCEDURE" );
2806+ }
27912807else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches1 ("REFERENCING" ))
27922808COMPLETE_WITH_LIST2 ("OLD TABLE" ,"NEW TABLE" );
27932809else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches2 ("OLD|NEW" ,"TABLE" ))
27942810COMPLETE_WITH_CONST ("AS" );
27952811else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
27962812 (TailMatches5 ("REFERENCING" ,"OLD" ,"TABLE" ,"AS" ,MatchAny )||
27972813TailMatches4 ("REFERENCING" ,"OLD" ,"TABLE" ,MatchAny )))
2798- COMPLETE_WITH_LIST4 ("NEW TABLE" ,"FOR" ,"WHEN (" ,"EXECUTE PROCEDURE" );
2814+ {
2815+ if (pset .sversion >=110000 )
2816+ COMPLETE_WITH_LIST4 ("NEW TABLE" ,"FOR" ,"WHEN (" ,
2817+ "EXECUTE FUNCTION" );
2818+ else
2819+ COMPLETE_WITH_LIST4 ("NEW TABLE" ,"FOR" ,"WHEN (" ,
2820+ "EXECUTE PROCEDURE" );
2821+ }
27992822else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
28002823 (TailMatches5 ("REFERENCING" ,"NEW" ,"TABLE" ,"AS" ,MatchAny )||
28012824TailMatches4 ("REFERENCING" ,"NEW" ,"TABLE" ,MatchAny )))
2802- COMPLETE_WITH_LIST4 ("OLD TABLE" ,"FOR" ,"WHEN (" ,"EXECUTE PROCEDURE" );
2825+ {
2826+ if (pset .sversion >=110000 )
2827+ COMPLETE_WITH_LIST4 ("OLD TABLE" ,"FOR" ,"WHEN (" ,
2828+ "EXECUTE FUNCTION" );
2829+ else
2830+ COMPLETE_WITH_LIST4 ("OLD TABLE" ,"FOR" ,"WHEN (" ,
2831+ "EXECUTE PROCEDURE" );
2832+ }
28032833else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
28042834 (TailMatches9 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny )||
28052835TailMatches8 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,MatchAny ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny )||
28062836TailMatches8 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny ,"OLD|NEW" ,"TABLE" ,MatchAny )||
28072837TailMatches7 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,MatchAny ,"OLD|NEW" ,"TABLE" ,MatchAny )))
2808- COMPLETE_WITH_LIST3 ("FOR" ,"WHEN (" ,"EXECUTE PROCEDURE" );
2838+ {
2839+ if (pset .sversion >=110000 )
2840+ COMPLETE_WITH_LIST3 ("FOR" ,"WHEN (" ,"EXECUTE FUNCTION" );
2841+ else
2842+ COMPLETE_WITH_LIST3 ("FOR" ,"WHEN (" ,"EXECUTE PROCEDURE" );
2843+ }
28092844else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches1 ("FOR" ))
28102845COMPLETE_WITH_LIST3 ("EACH" ,"ROW" ,"STATEMENT" );
28112846else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches2 ("FOR" ,"EACH" ))
28122847COMPLETE_WITH_LIST2 ("ROW" ,"STATEMENT" );
28132848else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
28142849 (TailMatches3 ("FOR" ,"EACH" ,"ROW|STATEMENT" )||
28152850TailMatches2 ("FOR" ,"ROW|STATEMENT" )))
2816- COMPLETE_WITH_LIST2 ("WHEN (" ,"EXECUTE PROCEDURE" );
2851+ {
2852+ if (pset .sversion >=110000 )
2853+ COMPLETE_WITH_LIST2 ("WHEN (" ,"EXECUTE FUNCTION" );
2854+ else
2855+ COMPLETE_WITH_LIST2 ("WHEN (" ,"EXECUTE PROCEDURE" );
2856+ }
28172857/* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */
28182858else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches1 ("EXECUTE" ))
2819- COMPLETE_WITH_CONST ("PROCEDURE" );
2820- else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches2 ("EXECUTE" ,"PROCEDURE" ))
2859+ {
2860+ if (pset .sversion >=110000 )
2861+ COMPLETE_WITH_CONST ("FUNCTION" );
2862+ else
2863+ COMPLETE_WITH_CONST ("PROCEDURE" );
2864+ }
2865+ else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
2866+ TailMatches2 ("EXECUTE" ,"FUNCTION|PROCEDURE" ))
28212867COMPLETE_WITH_VERSIONED_SCHEMA_QUERY (Query_for_list_of_functions ,NULL );
28222868
28232869/* CREATE ROLE,USER,GROUP <name> */