Skip to content

Commit 6079375

Browse files
committed
More psql tab-completion for new commands.
- ALTER FOREIGN DATA WRAPPER with HANDLER - ALTER TABLE VALIDATE CONSTRAINT - ALTER TYPE ADD VALUE - COPY with ENCODING and FORCE NOT NULL - CREATE FOREIGN DATA WRAPPER with HANDLER - CREATE TRIGGER ... INSTEAD OF
1 parent 4191e16 commit 6079375

File tree

1 file changed

+46
-12
lines changed

1 file changed

+46
-12
lines changed

src/bin/psql/tab-complete.c

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ psql_completion(char *text, int start, int end)
841841

842842
/* ALTER SCHEMA <name> */
843843
else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
844-
pg_strcasecmp(prev2_wd, "SCHEMA") == 0)
844+
pg_strcasecmp(prev2_wd, "SCHEMA") == 0)
845845
{
846846
static const char *const list_ALTERGEN[] =
847847
{"OWNER TO", "RENAME TO", NULL};
@@ -906,7 +906,7 @@ psql_completion(char *text, int start, int end)
906906
pg_strcasecmp(prev2_wd, "WRAPPER") == 0)
907907
{
908908
static const char *const list_ALTER_FDW[] =
909-
{"VALIDATOR", "OPTIONS", "OWNER TO", NULL};
909+
{"HANDLER", "VALIDATOR", "OPTIONS", "OWNER TO", NULL};
910910

911911
COMPLETE_WITH_LIST(list_ALTER_FDW);
912912
}
@@ -1128,15 +1128,15 @@ psql_completion(char *text, int start, int end)
11281128
COMPLETE_WITH_CONST("RENAME TO");
11291129

11301130
/*
1131-
* If we detect ALTER TABLE <name>, suggest either ADD, DROP, ALTER,
1132-
* RENAME, CLUSTER ON or OWNER
1131+
* If we detect ALTER TABLE <name>, suggest sub commands
11331132
*/
11341133
else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
11351134
pg_strcasecmp(prev2_wd, "TABLE") == 0)
11361135
{
11371136
static const char *const list_ALTER2[] =
11381137
{"ADD", "ALTER", "CLUSTER ON", "DISABLE", "DROP", "ENABLE", "INHERIT",
1139-
"NO INHERIT", "RENAME", "RESET", "OWNER TO", "SET", NULL};
1138+
"NO INHERIT", "RENAME", "RESET", "OWNER TO", "SET",
1139+
"VALIDATE CONSTRAINT", NULL};
11401140

11411141
COMPLETE_WITH_LIST(list_ALTER2);
11421142
}
@@ -1420,11 +1420,21 @@ psql_completion(char *text, int start, int end)
14201420
pg_strcasecmp(prev2_wd, "TYPE") == 0)
14211421
{
14221422
static const char *const list_ALTERTYPE[] =
1423-
{"ADD ATTRIBUTE", "ALTER ATTRIBUTE", "DROP ATTRIBUTE",
1423+
{"ADD ATTRIBUTE", "ADD VALUE", "ALTER ATTRIBUTE", "DROP ATTRIBUTE",
14241424
"OWNER TO", "RENAME", "SET SCHEMA", NULL};
14251425

14261426
COMPLETE_WITH_LIST(list_ALTERTYPE);
14271427
}
1428+
/* complete ALTER TYPE <foo> ADD with actions */
1429+
else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 &&
1430+
pg_strcasecmp(prev3_wd, "TYPE") == 0 &&
1431+
pg_strcasecmp(prev_wd, "ADD") == 0)
1432+
{
1433+
static const char *const list_ALTERTYPE[] =
1434+
{"ATTRIBUTE", "VALUE", NULL};
1435+
1436+
COMPLETE_WITH_LIST(list_ALTERTYPE);
1437+
}
14281438
/* ALTER TYPE <foo> RENAME */
14291439
else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 &&
14301440
pg_strcasecmp(prev3_wd, "TYPE") == 0 &&
@@ -1598,7 +1608,7 @@ psql_completion(char *text, int start, int end)
15981608
pg_strcasecmp(prev2_wd, "TO") == 0))
15991609
{
16001610
static const char *const list_COPY[] =
1601-
{"BINARY", "OIDS", "DELIMITER", "NULL", "CSV", NULL};
1611+
{"BINARY", "OIDS", "DELIMITER", "NULL", "CSV", "ENCODING", NULL};
16021612

16031613
COMPLETE_WITH_LIST(list_COPY);
16041614
}
@@ -1609,7 +1619,7 @@ psql_completion(char *text, int start, int end)
16091619
pg_strcasecmp(prev3_wd, "TO") == 0))
16101620
{
16111621
static const char *const list_CSV[] =
1612-
{"HEADER", "QUOTE", "ESCAPE", "FORCE QUOTE", NULL};
1622+
{"HEADER", "QUOTE", "ESCAPE", "FORCE QUOTE", "FORCE NOT NULL", NULL};
16131623

16141624
COMPLETE_WITH_LIST(list_CSV);
16151625
}
@@ -1655,7 +1665,12 @@ psql_completion(char *text, int start, int end)
16551665
pg_strcasecmp(prev4_wd, "FOREIGN") == 0 &&
16561666
pg_strcasecmp(prev3_wd, "DATA") == 0 &&
16571667
pg_strcasecmp(prev2_wd, "WRAPPER") == 0)
1658-
COMPLETE_WITH_CONST("VALIDATOR");
1668+
{
1669+
static const char *const list_CREATE_FOREIGN_DATA_WRAPPER[] =
1670+
{"HANDLER", "VALIDATOR", NULL};
1671+
1672+
COMPLETE_WITH_LIST(list_CREATE_FOREIGN_DATA_WRAPPER);
1673+
}
16591674

16601675
/* CREATE INDEX */
16611676
/* First off we complete CREATE UNIQUE with "INDEX" */
@@ -1836,11 +1851,25 @@ psql_completion(char *text, int start, int end)
18361851

18371852
COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS);
18381853
}
1839-
/* complete CREATE TRIGGER <name> BEFORE,AFTER sth with OR,ON */
1854+
/* complete CREATE TRIGGER <name> INSTEAD OF with an event */
18401855
else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 &&
18411856
pg_strcasecmp(prev4_wd, "TRIGGER") == 0 &&
1842-
(pg_strcasecmp(prev2_wd, "BEFORE") == 0 ||
1843-
pg_strcasecmp(prev2_wd, "AFTER") == 0))
1857+
pg_strcasecmp(prev2_wd, "INSTEAD") == 0 &&
1858+
pg_strcasecmp(prev_wd, "OF") == 0)
1859+
{
1860+
static const char *const list_CREATETRIGGER_EVENTS[] =
1861+
{"INSERT", "DELETE", "UPDATE", NULL};
1862+
1863+
COMPLETE_WITH_LIST(list_CREATETRIGGER_EVENTS);
1864+
}
1865+
/* complete CREATE TRIGGER <name> BEFORE,AFTER sth with OR,ON */
1866+
else if ((pg_strcasecmp(prev5_wd, "CREATE") == 0 &&
1867+
pg_strcasecmp(prev4_wd, "TRIGGER") == 0 &&
1868+
(pg_strcasecmp(prev2_wd, "BEFORE") == 0 ||
1869+
pg_strcasecmp(prev2_wd, "AFTER") == 0)) ||
1870+
(pg_strcasecmp(prev5_wd, "TRIGGER") == 0 &&
1871+
pg_strcasecmp(prev3_wd, "INSTEAD") == 0 &&
1872+
pg_strcasecmp(prev2_wd, "OF") == 0))
18441873
{
18451874
static const char *const list_CREATETRIGGER2[] =
18461875
{"ON", "OR", NULL};
@@ -1857,6 +1886,11 @@ psql_completion(char *text, int start, int end)
18571886
pg_strcasecmp(prev3_wd, "AFTER") == 0) &&
18581887
pg_strcasecmp(prev_wd, "ON") == 0)
18591888
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
1889+
/* complete CREATE TRIGGER ... INSTEAD OF event ON with a list of views */
1890+
else if (pg_strcasecmp(prev4_wd, "INSTEAD") == 0 &&
1891+
pg_strcasecmp(prev3_wd, "OF") == 0 &&
1892+
pg_strcasecmp(prev_wd, "ON") == 0)
1893+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views, NULL);
18601894
/* complete CREATE TRIGGER ... EXECUTE with PROCEDURE */
18611895
else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0)
18621896
COMPLETE_WITH_CONST("PROCEDURE");

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy