@@ -2465,49 +2465,94 @@ psql_completion(const char *text, int start, int end)
2465
2465
2466
2466
/*
2467
2467
* 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.
2469
2470
*/
2470
2471
else if (TailMatches ("CREATE" ,"TRIGGER" ,MatchAny ,"BEFORE|AFTER" ,MatchAny ,"ON" ))
2471
2472
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables ,NULL );
2472
2473
/* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
2473
2474
else if (TailMatches ("CREATE" ,"TRIGGER" ,MatchAny ,"INSTEAD" ,"OF" ,MatchAny ,"ON" ))
2474
2475
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_views ,NULL );
2475
2476
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
+ }
2478
2485
else if (HeadMatches ("CREATE" ,"TRIGGER" )&&
2479
2486
(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
+ }
2481
2493
else if (HeadMatches ("CREATE" ,"TRIGGER" )&& TailMatches ("REFERENCING" ))
2482
2494
COMPLETE_WITH ("OLD TABLE" ,"NEW TABLE" );
2483
2495
else if (HeadMatches ("CREATE" ,"TRIGGER" )&& TailMatches ("OLD|NEW" ,"TABLE" ))
2484
2496
COMPLETE_WITH ("AS" );
2485
2497
else if (HeadMatches ("CREATE" ,"TRIGGER" )&&
2486
2498
(TailMatches ("REFERENCING" ,"OLD" ,"TABLE" ,"AS" ,MatchAny )||
2487
2499
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
+ }
2489
2506
else if (HeadMatches ("CREATE" ,"TRIGGER" )&&
2490
2507
(TailMatches ("REFERENCING" ,"NEW" ,"TABLE" ,"AS" ,MatchAny )||
2491
2508
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
+ }
2493
2515
else if (HeadMatches ("CREATE" ,"TRIGGER" )&&
2494
2516
(TailMatches ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny )||
2495
2517
TailMatches ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,MatchAny ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny )||
2496
2518
TailMatches ("REFERENCING" ,"OLD|NEW" ,"TABLE" ,"AS" ,MatchAny ,"OLD|NEW" ,"TABLE" ,MatchAny )||
2497
2519
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
+ }
2499
2526
else if (HeadMatches ("CREATE" ,"TRIGGER" )&& TailMatches ("FOR" ))
2500
2527
COMPLETE_WITH ("EACH" ,"ROW" ,"STATEMENT" );
2501
2528
else if (HeadMatches ("CREATE" ,"TRIGGER" )&& TailMatches ("FOR" ,"EACH" ))
2502
2529
COMPLETE_WITH ("ROW" ,"STATEMENT" );
2503
2530
else if (HeadMatches ("CREATE" ,"TRIGGER" )&&
2504
2531
(TailMatches ("FOR" ,"EACH" ,"ROW|STATEMENT" )||
2505
2532
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 */
2508
2547
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" ))
2511
2556
COMPLETE_WITH_VERSIONED_SCHEMA_QUERY (Query_for_list_of_functions ,NULL );
2512
2557
2513
2558
/* CREATE ROLE,USER,GROUP <name> */