psql tab completion for ALTER DEFAULT PRIVILEGES and USER MAPPING FOR PUBLIC.

This commit is contained in:
Itagaki Takahiro 2010-04-07 03:51:19 +00:00
parent 1a8957a6f7
commit 9c40543c02
1 changed files with 38 additions and 3 deletions

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2010, PostgreSQL Global Development Group * Copyright (c) 2000-2010, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.197 2010/04/05 05:33:24 itagaki Exp $ * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.198 2010/04/07 03:51:19 itagaki Exp $
*/ */
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -700,7 +700,7 @@ psql_completion(char *text, int start, int end)
pg_strcasecmp(prev3_wd, "TABLE") != 0) pg_strcasecmp(prev3_wd, "TABLE") != 0)
{ {
static const char *const list_ALTER[] = static const char *const list_ALTER[] =
{"AGGREGATE", "CONVERSION", "DATABASE", "DOMAIN", "FOREIGN DATA WRAPPER", "FUNCTION", {"AGGREGATE", "CONVERSION", "DATABASE", "DEFAULT PRIVILEGES", "DOMAIN", "FOREIGN DATA WRAPPER", "FUNCTION",
"GROUP", "INDEX", "LANGUAGE", "LARGE OBJECT", "OPERATOR", "ROLE", "SCHEMA", "SERVER", "SEQUENCE", "TABLE", "GROUP", "INDEX", "LANGUAGE", "LARGE OBJECT", "OPERATOR", "ROLE", "SCHEMA", "SERVER", "SEQUENCE", "TABLE",
"TABLESPACE", "TEXT SEARCH", "TRIGGER", "TYPE", "USER", "USER MAPPING FOR", "VIEW", NULL}; "TABLESPACE", "TEXT SEARCH", "TRIGGER", "TYPE", "USER", "USER MAPPING FOR", "VIEW", NULL};
@ -846,6 +846,38 @@ psql_completion(char *text, int start, int end)
{ {
COMPLETE_WITH_CONST("PASSWORD"); COMPLETE_WITH_CONST("PASSWORD");
} }
/* ALTER DEFAULT PRIVILEGES */
else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
pg_strcasecmp(prev2_wd, "DEFAULT") == 0 &&
pg_strcasecmp(prev_wd, "PRIVILEGES") == 0)
{
static const char *const list_ALTER_DEFAULT_PRIVILEGES[] =
{"FOR ROLE", "FOR USER", "IN SCHEMA", NULL};
COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES);
}
/* ALTER DEFAULT PRIVILEGES FOR */
else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 &&
pg_strcasecmp(prev3_wd, "DEFAULT") == 0 &&
pg_strcasecmp(prev2_wd, "PRIVILEGES") == 0 &&
pg_strcasecmp(prev_wd, "FOR") == 0)
{
static const char *const list_ALTER_DEFAULT_PRIVILEGES_FOR[] =
{"ROLE", "USER", NULL};
COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_FOR);
}
/* ALTER DEFAULT PRIVILEGES { FOR ROLE ... | IN SCHEMA ... } */
else if (pg_strcasecmp(prev5_wd, "DEFAULT") == 0 &&
pg_strcasecmp(prev4_wd, "PRIVILEGES") == 0 &&
(pg_strcasecmp(prev3_wd, "FOR") == 0 ||
pg_strcasecmp(prev3_wd, "IN") == 0))
{
static const char *const list_ALTER_DEFAULT_PRIVILEGES_REST[] =
{"GRANT", "REVOKE", NULL};
COMPLETE_WITH_LIST(list_ALTER_DEFAULT_PRIVILEGES_REST);
}
/* ALTER DOMAIN <name> */ /* ALTER DOMAIN <name> */
else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
pg_strcasecmp(prev2_wd, "DOMAIN") == 0) pg_strcasecmp(prev2_wd, "DOMAIN") == 0)
@ -2336,7 +2368,10 @@ psql_completion(char *text, int start, int end)
pg_strcasecmp(prev3_wd, "USER") == 0 && pg_strcasecmp(prev3_wd, "USER") == 0 &&
pg_strcasecmp(prev2_wd, "MAPPING") == 0 && pg_strcasecmp(prev2_wd, "MAPPING") == 0 &&
pg_strcasecmp(prev_wd, "FOR") == 0) pg_strcasecmp(prev_wd, "FOR") == 0)
COMPLETE_WITH_QUERY(Query_for_list_of_roles); COMPLETE_WITH_QUERY(Query_for_list_of_roles
" UNION SELECT 'CURRENT_USER'"
" UNION SELECT 'PUBLIC'"
" UNION SELECT 'USER'");
else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 || else if ((pg_strcasecmp(prev4_wd, "ALTER") == 0 ||
pg_strcasecmp(prev4_wd, "DROP") == 0) && pg_strcasecmp(prev4_wd, "DROP") == 0) &&
pg_strcasecmp(prev3_wd, "USER") == 0 && pg_strcasecmp(prev3_wd, "USER") == 0 &&