Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbf0aa7c

Browse files
committed
Add tab completion for CREATE [OR REPLACE] TRIGGER in psql
92bf7e2 has added support for this grammar.Author: Noriyoshi ShinodaDiscussion:https://postgr.es/m/TU4PR8401MB115244623CF4724DCA0D507FEEE30@TU4PR8401MB1152.NAMPRD84.PROD.OUTLOOK.COM
1 parentcf2acaf commitbf0aa7c

File tree

1 file changed

+76
-29
lines changed

1 file changed

+76
-29
lines changed

‎src/bin/psql/tab-complete.c

Lines changed: 76 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,7 @@ psql_completion(const char *text, int start, int end)
15801580
/* complete with something you can create or replace */
15811581
elseif (TailMatches("CREATE","OR","REPLACE"))
15821582
COMPLETE_WITH("FUNCTION","PROCEDURE","LANGUAGE","RULE","VIEW",
1583-
"AGGREGATE","TRANSFORM");
1583+
"AGGREGATE","TRANSFORM","TRIGGER");
15841584

15851585
/* DROP, but not DROP embedded in other commands */
15861586
/* complete with something you can drop */
@@ -2712,31 +2712,56 @@ psql_completion(const char *text, int start, int end)
27122712
"slot_name","synchronous_commit");
27132713

27142714
/* CREATE TRIGGER --- is allowed inside CREATE SCHEMA, so use TailMatches */
2715-
/* complete CREATE TRIGGER <name> with BEFORE,AFTER,INSTEAD OF */
2716-
elseif (TailMatches("CREATE","TRIGGER",MatchAny))
2715+
2716+
/*
2717+
* Complete CREATE [ OR REPLACE ] TRIGGER <name> with BEFORE|AFTER|INSTEAD
2718+
* OF.
2719+
*/
2720+
elseif (TailMatches("CREATE","TRIGGER",MatchAny)||
2721+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny))
27172722
COMPLETE_WITH("BEFORE","AFTER","INSTEAD OF");
2718-
/* complete CREATE TRIGGER <name> BEFORE,AFTER with an event */
2719-
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"BEFORE|AFTER"))
2723+
2724+
/*
2725+
* Complete CREATE [ OR REPLACE ] TRIGGER <name> BEFORE,AFTER with an
2726+
* event.
2727+
*/
2728+
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"BEFORE|AFTER")||
2729+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny,"BEFORE|AFTER"))
27202730
COMPLETE_WITH("INSERT","DELETE","UPDATE","TRUNCATE");
2721-
/* complete CREATE TRIGGER <name> INSTEAD OF with an event */
2722-
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"INSTEAD","OF"))
2731+
/* Complete CREATE [ OR REPLACE ] TRIGGER <name> INSTEAD OF with an event */
2732+
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"INSTEAD","OF")||
2733+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny,"INSTEAD","OF"))
27232734
COMPLETE_WITH("INSERT","DELETE","UPDATE");
2724-
/* complete CREATE TRIGGER <name> BEFORE,AFTER sth with OR,ON */
2735+
2736+
/*
2737+
* Complete CREATE [ OR REPLACE ] TRIGGER <name> BEFORE,AFTER sth with
2738+
* OR|ON.
2739+
*/
27252740
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"BEFORE|AFTER",MatchAny)||
2726-
TailMatches("CREATE","TRIGGER",MatchAny,"INSTEAD","OF",MatchAny))
2741+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny,"BEFORE|AFTER",MatchAny)||
2742+
TailMatches("CREATE","TRIGGER",MatchAny,"INSTEAD","OF",MatchAny)||
2743+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny,"INSTEAD","OF",MatchAny))
27272744
COMPLETE_WITH("ON","OR");
27282745

27292746
/*
2730-
*complete CREATE TRIGGER <name> BEFORE,AFTER event ON with a list of
2731-
* tables. EXECUTE FUNCTION is the recommended grammar instead of EXECUTE
2732-
* PROCEDURE in version 11 and upwards.
2747+
*Complete CREATE[ OR REPLACE ]TRIGGER <name> BEFORE,AFTER event ON
2748+
*with a list oftables. EXECUTE FUNCTION is the recommended grammar
2749+
*instead of EXECUTEPROCEDURE in version 11 and upwards.
27332750
*/
2734-
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"BEFORE|AFTER",MatchAny,"ON"))
2751+
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"BEFORE|AFTER",MatchAny,"ON")||
2752+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny,"BEFORE|AFTER",MatchAny,"ON"))
27352753
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,NULL);
2736-
/* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
2737-
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"INSTEAD","OF",MatchAny,"ON"))
2754+
2755+
/*
2756+
* Complete CREATE [ OR REPLACE ] TRIGGER ... INSTEAD OF event ON with a
2757+
* list of views.
2758+
*/
2759+
elseif (TailMatches("CREATE","TRIGGER",MatchAny,"INSTEAD","OF",MatchAny,"ON")||
2760+
TailMatches("CREATE","OR","REPLACE","TRIGGER",MatchAny,"INSTEAD","OF",MatchAny,"ON"))
27382761
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views,NULL);
2739-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("ON",MatchAny))
2762+
elseif ((HeadMatches("CREATE","TRIGGER")||
2763+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2764+
TailMatches("ON",MatchAny))
27402765
{
27412766
if (pset.sversion >=110000)
27422767
COMPLETE_WITH("NOT DEFERRABLE","DEFERRABLE","INITIALLY",
@@ -2745,19 +2770,25 @@ psql_completion(const char *text, int start, int end)
27452770
COMPLETE_WITH("NOT DEFERRABLE","DEFERRABLE","INITIALLY",
27462771
"REFERENCING","FOR","WHEN (","EXECUTE PROCEDURE");
27472772
}
2748-
elseif (HeadMatches("CREATE","TRIGGER")&&
2773+
elseif ((HeadMatches("CREATE","TRIGGER")||
2774+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
27492775
(TailMatches("DEFERRABLE")||TailMatches("INITIALLY","IMMEDIATE|DEFERRED")))
27502776
{
27512777
if (pset.sversion >=110000)
27522778
COMPLETE_WITH("REFERENCING","FOR","WHEN (","EXECUTE FUNCTION");
27532779
else
27542780
COMPLETE_WITH("REFERENCING","FOR","WHEN (","EXECUTE PROCEDURE");
27552781
}
2756-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("REFERENCING"))
2782+
elseif ((HeadMatches("CREATE","TRIGGER")||
2783+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2784+
TailMatches("REFERENCING"))
27572785
COMPLETE_WITH("OLD TABLE","NEW TABLE");
2758-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("OLD|NEW","TABLE"))
2786+
elseif ((HeadMatches("CREATE","TRIGGER")||
2787+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2788+
TailMatches("OLD|NEW","TABLE"))
27592789
COMPLETE_WITH("AS");
2760-
elseif (HeadMatches("CREATE","TRIGGER")&&
2790+
elseif ((HeadMatches("CREATE","TRIGGER")||
2791+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
27612792
(TailMatches("REFERENCING","OLD","TABLE","AS",MatchAny)||
27622793
TailMatches("REFERENCING","OLD","TABLE",MatchAny)))
27632794
{
@@ -2766,7 +2797,8 @@ psql_completion(const char *text, int start, int end)
27662797
else
27672798
COMPLETE_WITH("NEW TABLE","FOR","WHEN (","EXECUTE PROCEDURE");
27682799
}
2769-
elseif (HeadMatches("CREATE","TRIGGER")&&
2800+
elseif ((HeadMatches("CREATE","TRIGGER")||
2801+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
27702802
(TailMatches("REFERENCING","NEW","TABLE","AS",MatchAny)||
27712803
TailMatches("REFERENCING","NEW","TABLE",MatchAny)))
27722804
{
@@ -2775,7 +2807,8 @@ psql_completion(const char *text, int start, int end)
27752807
else
27762808
COMPLETE_WITH("OLD TABLE","FOR","WHEN (","EXECUTE PROCEDURE");
27772809
}
2778-
elseif (HeadMatches("CREATE","TRIGGER")&&
2810+
elseif ((HeadMatches("CREATE","TRIGGER")||
2811+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
27792812
(TailMatches("REFERENCING","OLD|NEW","TABLE","AS",MatchAny,"OLD|NEW","TABLE","AS",MatchAny)||
27802813
TailMatches("REFERENCING","OLD|NEW","TABLE",MatchAny,"OLD|NEW","TABLE","AS",MatchAny)||
27812814
TailMatches("REFERENCING","OLD|NEW","TABLE","AS",MatchAny,"OLD|NEW","TABLE",MatchAny)||
@@ -2786,11 +2819,16 @@ psql_completion(const char *text, int start, int end)
27862819
else
27872820
COMPLETE_WITH("FOR","WHEN (","EXECUTE PROCEDURE");
27882821
}
2789-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("FOR"))
2822+
elseif ((HeadMatches("CREATE","TRIGGER")||
2823+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2824+
TailMatches("FOR"))
27902825
COMPLETE_WITH("EACH","ROW","STATEMENT");
2791-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("FOR","EACH"))
2826+
elseif ((HeadMatches("CREATE","TRIGGER")||
2827+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2828+
TailMatches("FOR","EACH"))
27922829
COMPLETE_WITH("ROW","STATEMENT");
2793-
elseif (HeadMatches("CREATE","TRIGGER")&&
2830+
elseif ((HeadMatches("CREATE","TRIGGER")||
2831+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
27942832
(TailMatches("FOR","EACH","ROW|STATEMENT")||
27952833
TailMatches("FOR","ROW|STATEMENT")))
27962834
{
@@ -2799,22 +2837,31 @@ psql_completion(const char *text, int start, int end)
27992837
else
28002838
COMPLETE_WITH("WHEN (","EXECUTE PROCEDURE");
28012839
}
2802-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("WHEN","(*)"))
2840+
elseif ((HeadMatches("CREATE","TRIGGER")||
2841+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2842+
TailMatches("WHEN","(*)"))
28032843
{
28042844
if (pset.sversion >=110000)
28052845
COMPLETE_WITH("EXECUTE FUNCTION");
28062846
else
28072847
COMPLETE_WITH("EXECUTE PROCEDURE");
28082848
}
2809-
/* complete CREATE TRIGGER ... EXECUTE with PROCEDURE|FUNCTION */
2810-
elseif (HeadMatches("CREATE","TRIGGER")&&TailMatches("EXECUTE"))
2849+
2850+
/*
2851+
* Complete CREATE [ OR REPLACE ] TRIGGER ... EXECUTE with
2852+
* PROCEDURE|FUNCTION.
2853+
*/
2854+
elseif ((HeadMatches("CREATE","TRIGGER")||
2855+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
2856+
TailMatches("EXECUTE"))
28112857
{
28122858
if (pset.sversion >=110000)
28132859
COMPLETE_WITH("FUNCTION");
28142860
else
28152861
COMPLETE_WITH("PROCEDURE");
28162862
}
2817-
elseif (HeadMatches("CREATE","TRIGGER")&&
2863+
elseif ((HeadMatches("CREATE","TRIGGER")||
2864+
HeadMatches("CREATE","OR","REPLACE","TRIGGER"))&&
28182865
TailMatches("EXECUTE","FUNCTION|PROCEDURE"))
28192866
COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions,NULL);
28202867

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp