@@ -2775,49 +2775,95 @@ psql_completion(const char *text, int start, int end)
2775
2775
2776
2776
/*
2777
2777
* 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.
2779
2780
*/
2780
2781
else if (TailMatches6 ("CREATE" ,"TRIGGER" ,MatchAny ,"BEFORE|AFTER" ,MatchAny ,"ON" ))
2781
2782
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables ,NULL );
2782
2783
/* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
2783
2784
else if (TailMatches7 ("CREATE" ,"TRIGGER" ,MatchAny ,"INSTEAD" ,"OF" ,MatchAny ,"ON" ))
2784
2785
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_views ,NULL );
2785
2786
else 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
+ }
2788
2797
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
2789
2798
(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
+ }
2791
2807
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches1 ("REFERENCING" ))
2792
2808
COMPLETE_WITH_LIST2 ("OLD TABLE" ,"NEW TABLE" );
2793
2809
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches2 ("OLD|NEW" ,"TABLE" ))
2794
2810
COMPLETE_WITH_CONST ("AS" );
2795
2811
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
2796
2812
(TailMatches5 ("REFERENCING" ,"OLD" ,"TABLE" ,"AS" ,MatchAny )||
2797
2813
TailMatches4 ("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
+ }
2799
2822
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
2800
2823
(TailMatches5 ("REFERENCING" ,"NEW" ,"TABLE" ,"AS" ,MatchAny )||
2801
2824
TailMatches4 ("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
+ }
2803
2833
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
2804
2834
(TailMatches9 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny )||
2805
2835
TailMatches8 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,MatchAny ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny )||
2806
2836
TailMatches8 ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny ,"OLD|NEW" ,"TABLE" ,MatchAny )||
2807
2837
TailMatches7 ("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
+ }
2809
2844
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches1 ("FOR" ))
2810
2845
COMPLETE_WITH_LIST3 ("EACH" ,"ROW" ,"STATEMENT" );
2811
2846
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&& TailMatches2 ("FOR" ,"EACH" ))
2812
2847
COMPLETE_WITH_LIST2 ("ROW" ,"STATEMENT" );
2813
2848
else if (HeadMatches2 ("CREATE" ,"TRIGGER" )&&
2814
2849
(TailMatches3 ("FOR" ,"EACH" ,"ROW|STATEMENT" )||
2815
2850
TailMatches2 ("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
+ }
2817
2857
/* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */
2818
2858
else 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" ))
2821
2867
COMPLETE_WITH_VERSIONED_SCHEMA_QUERY (Query_for_list_of_functions ,NULL );
2822
2868
2823
2869
/* CREATE ROLE,USER,GROUP <name> */