|
3 | 3 | *
|
4 | 4 | * Copyright (c) 2000-2010, PostgreSQL Global Development Group
|
5 | 5 | *
|
6 |
| - * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.197 2010/04/05 05:33:24 itagaki Exp $ |
| 6 | + * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.198 2010/04/07 03:51:19 itagaki Exp $ |
7 | 7 | */
|
8 | 8 |
|
9 | 9 | /*----------------------------------------------------------------------
|
@@ -700,7 +700,7 @@ psql_completion(char *text, int start, int end)
|
700 | 700 | pg_strcasecmp(prev3_wd, "TABLE") != 0)
|
701 | 701 | {
|
702 | 702 | static const char *const list_ALTER[] =
|
703 |
| - {"AGGREGATE", "CONVERSION", "DATABASE", "DOMAIN", "FOREIGN DATA WRAPPER", "FUNCTION", |
| 703 | + {"AGGREGATE", "CONVERSION", "DATABASE", "DEFAULT PRIVILEGES", "DOMAIN", "FOREIGN DATA WRAPPER", "FUNCTION", |
704 | 704 | "GROUP", "INDEX", "LANGUAGE", "LARGE OBJECT", "OPERATOR", "ROLE", "SCHEMA", "SERVER", "SEQUENCE", "TABLE",
|
705 | 705 | "TABLESPACE", "TEXT SEARCH", "TRIGGER", "TYPE", "USER", "USER MAPPING FOR", "VIEW", NULL};
|
706 | 706 |
|
@@ -846,6 +846,38 @@ psql_completion(char *text, int start, int end)
|
846 | 846 | {
|
847 | 847 | COMPLETE_WITH_CONST("PASSWORD");
|
848 | 848 | }
|
| 849 | + /* ALTER DEFAULT PRIVILEGES */ |
| 850 | + else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && |
| 851 | + pg_strcasecmp(prev2_wd, "DEFAULT") == 0 && |
| 852 | + pg_strcasecmp(prev_wd, "PRIVILEGES") == 0) |
| 853 | + { |
| 854 | + static const char *const list_ALTER_DEFAULT_PRIVILEGES[] = |
| 855 | + {"FOR ROLE", "FOR USER", "IN SCHEMA", NULL}; |
| 856 | + |
| 857 | + COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES); |
| 858 | + } |
| 859 | + /* ALTER DEFAULT PRIVILEGES FOR */ |
| 860 | + else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 && |
| 861 | + pg_strcasecmp(prev3_wd, "DEFAULT") == 0 && |
| 862 | + pg_strcasecmp(prev2_wd, "PRIVILEGES") == 0 && |
| 863 | + pg_strcasecmp(prev_wd, "FOR") == 0) |
| 864 | + { |
| 865 | + static const char *const list_ALTER_DEFAULT_PRIVILEGES_FOR[] = |
| 866 | + {"ROLE", "USER", NULL}; |
| 867 | + |
| 868 | + COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_FOR); |
| 869 | + } |
| 870 | + /* ALTER DEFAULT PRIVILEGES { FOR ROLE ... | IN SCHEMA ... } */ |
| 871 | + else if (pg_strcasecmp(prev5_wd, "DEFAULT") == 0 && |
| 872 | + pg_strcasecmp(prev4_wd, "PRIVILEGES") == 0 && |
| 873 | + (pg_strcasecmp(prev3_wd, "FOR") == 0 || |
| 874 | + pg_strcasecmp(prev3_wd, "IN") == 0)) |
| 875 | + { |
| 876 | + static const char *const list_ALTER_DEFAULT_PRIVILEGES_REST[] = |
| 877 | + {"GRANT", "REVOKE", NULL}; |
| 878 | + |
| 879 | + COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_REST); |
| 880 | + } |
849 | 881 | /* ALTER DOMAIN <name> */
|
850 | 882 | else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
|
851 | 883 | pg_strcasecmp(prev2_wd, "DOMAIN") == 0)
|
@@ -2336,7 +2368,10 @@ psql_completion(char *text, int start, int end)
|
2336 | 2368 | pg_strcasecmp(prev3_wd, "USER") == 0 &&
|
2337 | 2369 | pg_strcasecmp(prev2_wd, "MAPPING") == 0 &&
|
2338 | 2370 | pg_strcasecmp(prev_wd, "FOR") == 0)
|
2339 |
| - COMPLETE_WITH_QUERY(Query_for_list_of_roles); |
| 2371 | + COMPLETE_WITH_QUERY(Query_for_list_of_roles |
| 2372 | + " UNION SELECT 'CURRENT_USER'" |
| 2373 | + " UNION SELECT 'PUBLIC'" |
| 2374 | + " UNION SELECT 'USER'"); |
2340 | 2375 | else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 ||
|
2341 | 2376 | pg_strcasecmp(prev4_wd, "DROP") == 0) &&
|
2342 | 2377 | pg_strcasecmp(prev3_wd, "USER") == 0 &&
|
|
0 commit comments