@@ -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> */
0 commit comments