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

Commit7b97952

Browse files
committed
Tab completion for event triggers.
Ian Barwick
1 parente3e6e3a commit7b97952

File tree

1 file changed

+85
-3
lines changed

1 file changed

+85
-3
lines changed

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

Lines changed: 85 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,11 @@ static const SchemaQuery Query_for_list_of_matviews = {
714714
" FROM pg_catalog.pg_prepared_statements "\
715715
" WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s'"
716716

717+
#defineQuery_for_list_of_event_triggers \
718+
" SELECT pg_catalog.quote_ident(evtname) "\
719+
" FROM pg_catalog.pg_event_trigger "\
720+
" WHERE substring(pg_catalog.quote_ident(evtname),1,%d)='%s'"
721+
717722
/*
718723
* This is a list of all "things" in Pgsql, which can show up after CREATE or
719724
* DROP; and there is also a query to get a list of them.
@@ -746,6 +751,7 @@ static const pgsql_thing_t words_after_create[] = {
746751
{"DATABASE",Query_for_list_of_databases},
747752
{"DICTIONARY",Query_for_list_of_ts_dictionaries,NULL,THING_NO_SHOW},
748753
{"DOMAIN",NULL,&Query_for_list_of_domains},
754+
{"EVENT TRIGGER",NULL,NULL},
749755
{"EXTENSION",Query_for_list_of_extensions},
750756
{"FOREIGN DATA WRAPPER",NULL,NULL},
751757
{"FOREIGN TABLE",NULL,NULL},
@@ -934,7 +940,7 @@ psql_completion(const char *text, int start, int end)
934940
{
935941
staticconstchar*constlist_ALTER[]=
936942
{"AGGREGATE","COLLATION","CONVERSION","DATABASE","DEFAULT PRIVILEGES","DOMAIN",
937-
"EXTENSION","FOREIGN DATA WRAPPER","FOREIGN TABLE","FUNCTION",
943+
"EVENT TRIGGER","EXTENSION","FOREIGN DATA WRAPPER","FOREIGN TABLE","FUNCTION",
938944
"GROUP","INDEX","LANGUAGE","LARGE OBJECT","MATERIALIZED VIEW","OPERATOR",
939945
"ROLE","RULE","SCHEMA","SERVER","SEQUENCE","SYSTEM SET","TABLE",
940946
"TABLESPACE","TEXT SEARCH","TRIGGER","TYPE",
@@ -1003,6 +1009,37 @@ psql_completion(const char *text, int start, int end)
10031009
COMPLETE_WITH_LIST(list_ALTERDATABASE);
10041010
}
10051011

1012+
/* ALTER EVENT TRIGGER */
1013+
elseif (pg_strcasecmp(prev3_wd,"ALTER")==0&&
1014+
pg_strcasecmp(prev2_wd,"EVENT")==0&&
1015+
pg_strcasecmp(prev_wd,"TRIGGER")==0)
1016+
{
1017+
COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
1018+
}
1019+
1020+
/* ALTER EVENT TRIGGER <name> */
1021+
elseif (pg_strcasecmp(prev4_wd,"ALTER")==0&&
1022+
pg_strcasecmp(prev3_wd,"EVENT")==0&&
1023+
pg_strcasecmp(prev2_wd,"TRIGGER")==0)
1024+
{
1025+
staticconstchar*constlist_ALTER_EVENT_TRIGGER[]=
1026+
{"DISABLE","ENABLE","OWNER TO","RENAME TO",NULL};
1027+
1028+
COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER);
1029+
}
1030+
1031+
/* ALTER EVENT TRIGGER <name> ENABLE */
1032+
elseif (pg_strcasecmp(prev5_wd,"ALTER")==0&&
1033+
pg_strcasecmp(prev4_wd,"EVENT")==0&&
1034+
pg_strcasecmp(prev3_wd,"TRIGGER")==0&&
1035+
pg_strcasecmp(prev_wd,"ENABLE")==0)
1036+
{
1037+
staticconstchar*constlist_ALTER_EVENT_TRIGGER_ENABLE[]=
1038+
{"REPLICA","ALWAYS",NULL};
1039+
1040+
COMPLETE_WITH_LIST(list_ALTER_EVENT_TRIGGER_ENABLE);
1041+
}
1042+
10061043
/* ALTER EXTENSION <name> */
10071044
elseif (pg_strcasecmp(prev3_wd,"ALTER")==0&&
10081045
pg_strcasecmp(prev2_wd,"EXTENSION")==0)
@@ -1334,7 +1371,8 @@ psql_completion(const char *text, int start, int end)
13341371
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,NULL);
13351372

13361373
/* ALTER TRIGGER <name> ON <name> */
1337-
elseif (pg_strcasecmp(prev4_wd,"TRIGGER")==0&&
1374+
elseif (pg_strcasecmp(prev5_wd,"ALTER")==0&&
1375+
pg_strcasecmp(prev4_wd,"TRIGGER")==0&&
13381376
pg_strcasecmp(prev2_wd,"ON")==0)
13391377
COMPLETE_WITH_CONST("RENAME TO");
13401378

@@ -1876,7 +1914,7 @@ psql_completion(const char *text, int start, int end)
18761914
pg_strcasecmp(prev_wd,"ON")==0)
18771915
{
18781916
staticconstchar*constlist_COMMENT[]=
1879-
{"CAST","COLLATION","CONVERSION","DATABASE","EXTENSION",
1917+
{"CAST","COLLATION","CONVERSION","DATABASE","EVENT TRIGGER","EXTENSION",
18801918
"FOREIGN DATA WRAPPER","FOREIGN TABLE",
18811919
"SERVER","INDEX","LANGUAGE","RULE","SCHEMA","SEQUENCE",
18821920
"TABLE","TYPE","VIEW","MATERIALIZED VIEW","COLUMN","AGGREGATE","FUNCTION",
@@ -1931,6 +1969,13 @@ psql_completion(const char *text, int start, int end)
19311969
{
19321970
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews,NULL);
19331971
}
1972+
elseif (pg_strcasecmp(prev4_wd,"COMMENT")==0&&
1973+
pg_strcasecmp(prev3_wd,"ON")==0&&
1974+
pg_strcasecmp(prev2_wd,"EVENT")==0&&
1975+
pg_strcasecmp(prev_wd,"TRIGGER")==0)
1976+
{
1977+
COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
1978+
}
19341979
elseif ((pg_strcasecmp(prev4_wd,"COMMENT")==0&&
19351980
pg_strcasecmp(prev3_wd,"ON")==0)||
19361981
(pg_strcasecmp(prev5_wd,"COMMENT")==0&&
@@ -2354,6 +2399,27 @@ psql_completion(const char *text, int start, int end)
23542399
pg_strcasecmp(prev_wd,"AS")==0)
23552400
COMPLETE_WITH_CONST("SELECT");
23562401

2402+
/* CREATE EVENT TRIGGER */
2403+
elseif (pg_strcasecmp(prev2_wd,"CREATE")==0&&
2404+
pg_strcasecmp(prev_wd,"EVENT")==0)
2405+
COMPLETE_WITH_CONST("TRIGGER");
2406+
/* Complete CREATE EVENT TRIGGER <name> with ON */
2407+
elseif (pg_strcasecmp(prev4_wd,"CREATE")==0&&
2408+
pg_strcasecmp(prev3_wd,"EVENT")==0&&
2409+
pg_strcasecmp(prev2_wd,"TRIGGER")==0)
2410+
COMPLETE_WITH_CONST("ON");
2411+
/* Complete CREATE EVENT TRIGGER <name> ON with event_type */
2412+
elseif (pg_strcasecmp(prev5_wd,"CREATE")==0&&
2413+
pg_strcasecmp(prev4_wd,"EVENT")==0&&
2414+
pg_strcasecmp(prev3_wd,"TRIGGER")==0&&
2415+
pg_strcasecmp(prev_wd,"ON")==0)
2416+
{
2417+
staticconstchar*constlist_CREATE_EVENT_TRIGGER_ON[]=
2418+
{"ddl_command_start","ddl_command_end","sql_drop",NULL};
2419+
2420+
COMPLETE_WITH_LIST(list_CREATE_EVENT_TRIGGER_ON);
2421+
}
2422+
23572423
/* DECLARE */
23582424
elseif (pg_strcasecmp(prev2_wd,"DECLARE")==0)
23592425
{
@@ -2446,6 +2512,9 @@ psql_completion(const char *text, int start, int end)
24462512
(pg_strcasecmp(prev4_wd,"DROP")==0&&
24472513
pg_strcasecmp(prev3_wd,"AGGREGATE")==0&&
24482514
prev_wd[strlen(prev_wd)-1]==')')||
2515+
(pg_strcasecmp(prev4_wd,"DROP")==0&&
2516+
pg_strcasecmp(prev3_wd,"EVENT")==0&&
2517+
pg_strcasecmp(prev2_wd,"TRIGGER")==0)||
24492518
(pg_strcasecmp(prev5_wd,"DROP")==0&&
24502519
pg_strcasecmp(prev4_wd,"FOREIGN")==0&&
24512520
pg_strcasecmp(prev3_wd,"DATA")==0&&
@@ -2518,6 +2587,19 @@ psql_completion(const char *text, int start, int end)
25182587
COMPLETE_WITH_LIST(list_ALTERTEXTSEARCH);
25192588
}
25202589

2590+
/* DROP EVENT TRIGGER */
2591+
elseif (pg_strcasecmp(prev2_wd,"DROP")==0&&
2592+
pg_strcasecmp(prev_wd,"EVENT")==0)
2593+
{
2594+
COMPLETE_WITH_CONST("TRIGGER");
2595+
}
2596+
elseif (pg_strcasecmp(prev3_wd,"DROP")==0&&
2597+
pg_strcasecmp(prev2_wd,"EVENT")==0&&
2598+
pg_strcasecmp(prev_wd,"TRIGGER")==0)
2599+
{
2600+
COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
2601+
}
2602+
25212603
/* EXECUTE, but not EXECUTE embedded in other commands */
25222604
elseif (pg_strcasecmp(prev_wd,"EXECUTE")==0&&
25232605
prev2_wd[0]=='\0')

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp