From: Bruce Momjian Date: Fri, 13 Dec 2002 05:36:24 +0000 (+0000) Subject: Here's the patch I mentioned on HACKERS to fix up ALTER command tab X-Git-Tag: REL7_4_BETA1~1373 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1b706651b6028d8f24f93a6eab87dbe867f293e2;p=postgresql Here's the patch I mentioned on HACKERS to fix up ALTER command tab completion. Note that it's based on 7.3 tarball, not CVS HEAD, or 7.3rel branch. Damn, looking at CVS, this will patch into 7.3rel (just tested, it does) probably collide with Rod Taylor's patch adding ALTER TRIGGER stuff. O.K, second patch attached against HEAD - not tested, hand merged. Ross Reedstrom --- diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index ff0ae41021..2e45278426 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3,7 +3,7 @@ * * Copyright 2000-2002 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.69 2002/11/21 00:42:19 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.70 2002/12/13 05:36:24 momjian Exp $ */ /*---------------------------------------------------------------------- @@ -363,68 +363,96 @@ psql_completion(char *text, int start, int end) else if (!prev_wd) COMPLETE_WITH_LIST(sql_commands); -/* CREATE or DROP */ +/* CREATE or DROP but not ALTER TABLE sth DROP */ /* complete with something you can create or drop */ - else if (strcasecmp(prev_wd, "CREATE") == 0 || strcasecmp(prev_wd, "DROP") == 0) - matches = completion_matches(text, create_command_generator); + else if (strcasecmp(prev_wd, "CREATE") == 0 || + (strcasecmp(prev_wd, "DROP") == 0 && + strcasecmp(prev3_wd,"TABLE") != 0 )) + matches = completion_matches(text, create_command_generator); /* ALTER */ - /* complete with what you can alter (TABLE, GROUP, USER, ...) */ - else if (strcasecmp(prev_wd, "ALTER") == 0) + /* complete with what you can alter (TABLE, GROUP, USER, ...) + * unless we're in ALTER TABLE sth ALTER*/ + else if (strcasecmp(prev_wd, "ALTER") == 0 && + strcasecmp(prev3_wd, "TABLE") != 0 ) { - char *list_ALTER[] = {"DATABASE", "GROUP", "SCHEMA", "TABLE", "TRIGGER", "USER", NULL}; + char *list_ALTER[] = {"DATABASE", "GROUP", "SCHEMA", "TABLE", + "TRIGGER", "USER", NULL}; COMPLETE_WITH_LIST(list_ALTER); } /* ALTER DATABASE */ - else if (strcasecmp(prev3_wd, "ALTER") == 0 && strcasecmp(prev2_wd, "DATABASE") == 0) + else if (strcasecmp(prev3_wd, "ALTER") == 0 && + strcasecmp(prev2_wd, "DATABASE") == 0) { char *list_ALTERDATABASE[] = {"RESET", "SET", NULL}; COMPLETE_WITH_LIST(list_ALTERDATABASE); } /* ALTER TRIGGER , add ON */ - else if (strcasecmp(prev3_wd, "ALTER") == 0 && strcasecmp(prev2_wd, "TRIGGER") == 0) + else if (strcasecmp(prev3_wd, "ALTER") == 0 && + strcasecmp(prev2_wd, "TRIGGER") == 0) COMPLETE_WITH_CONST("ON"); /* * If we have ALTER TRIGGER ON, then add the correct tablename */ - else if (strcasecmp(prev4_wd, "ALTER") == 0 && strcasecmp(prev3_wd, "TRIGGER") == 0 - && strcasecmp(prev_wd, "ON") == 0) + else if (strcasecmp(prev4_wd, "ALTER") == 0 && + strcasecmp(prev3_wd, "TRIGGER") == 0 && + strcasecmp(prev_wd, "ON") == 0) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* - * If we detect ALTER TABLE , suggest either ADD, ALTER, or - * RENAME + * If we detect ALTER TABLE , suggest either ADD, DROP, ALTER, + * RENAME, or OWNER */ - else if (strcasecmp(prev3_wd, "ALTER") == 0 && strcasecmp(prev2_wd, "TABLE") == 0) + else if (strcasecmp(prev3_wd, "ALTER") == 0 && + strcasecmp(prev2_wd, "TABLE") == 0) { - char *list_ALTER2[] = {"ADD", "ALTER", "RENAME", NULL}; + char *list_ALTER2[] = {"ADD", "ALTER", "DROP", "RENAME", + "OWNER TO", NULL}; COMPLETE_WITH_LIST(list_ALTER2); } /* If we have TABLE ALTER|RENAME, provide list of columns */ else if (strcasecmp(prev3_wd, "TABLE") == 0 && - (strcasecmp(prev_wd, "ALTER") == 0 || strcasecmp(prev_wd, "RENAME") == 0)) + (strcasecmp(prev_wd, "ALTER") == 0 || + strcasecmp(prev_wd, "RENAME") == 0)) COMPLETE_WITH_ATTR(prev2_wd); + /* If we have TABLE DROP, provide COLUMN or CONSTRAINT */ + else if (strcasecmp(prev3_wd, "TABLE") == 0 && + strcasecmp(prev_wd, "DROP") == 0) + { + char *list_TABLEDROP[] = {"COLUMN", "CONSTRAINT", NULL}; + COMPLETE_WITH_LIST(list_TABLEDROP); + } + /* If we have TABLE DROP COLUMN, provide list of columns */ + else if (strcasecmp(prev4_wd, "TABLE") == 0 && + strcasecmp(prev2_wd, "DROP") == 0 && + strcasecmp(prev_wd, "COLUMN") == 0) + COMPLETE_WITH_ATTR(prev3_wd); + /* complete ALTER GROUP with ADD or DROP */ - else if (strcasecmp(prev3_wd, "ALTER") == 0 && strcasecmp(prev2_wd, "GROUP") == 0) + else if (strcasecmp(prev3_wd, "ALTER") == 0 && + strcasecmp(prev2_wd, "GROUP") == 0) { char *list_ALTERGROUP[] = {"ADD", "DROP", NULL}; COMPLETE_WITH_LIST(list_ALTERGROUP); } /* complete ALTER GROUP ADD|DROP with USER */ - else if (strcasecmp(prev4_wd, "ALTER") == 0 && strcasecmp(prev3_wd, "GROUP") == 0 - && (strcasecmp(prev_wd, "ADD") == 0 || strcasecmp(prev_wd, "DROP") == 0)) + else if (strcasecmp(prev4_wd, "ALTER") == 0 && + strcasecmp(prev3_wd, "GROUP") == 0 && + (strcasecmp(prev_wd, "ADD") == 0 || + strcasecmp(prev_wd, "DROP") == 0)) COMPLETE_WITH_CONST("USER"); /* complete {ALTER} GROUP ADD|DROP USER with a user name */ - else if (strcasecmp(prev4_wd, "GROUP") == 0 - && (strcasecmp(prev2_wd, "ADD") == 0 || strcasecmp(prev2_wd, "DROP") == 0) - && strcasecmp(prev_wd, "USER") == 0) + else if (strcasecmp(prev4_wd, "GROUP") == 0 && + (strcasecmp(prev2_wd, "ADD") == 0 || + strcasecmp(prev2_wd, "DROP") == 0) && + strcasecmp(prev_wd, "USER") == 0) COMPLETE_WITH_QUERY(Query_for_list_of_users); /* ANALYZE */ @@ -447,7 +475,8 @@ psql_completion(char *text, int start, int end) * If we have CLUSTER ON, then add the correct tablename as * well. */ - else if (strcasecmp(prev3_wd, "CLUSTER") == 0 && strcasecmp(prev_wd, "ON") == 0) + else if (strcasecmp(prev3_wd, "CLUSTER") == 0 && + strcasecmp(prev_wd, "ON") == 0) { char query_buffer[BUF_SIZE]; /* Some room to build * queries. */ @@ -463,16 +492,18 @@ psql_completion(char *text, int start, int end) /* COMMENT */ else if (strcasecmp(prev_wd, "COMMENT") == 0) COMPLETE_WITH_CONST("ON"); - else if (strcasecmp(prev2_wd, "COMMENT") == 0 && strcasecmp(prev_wd, "ON") == 0) + else if (strcasecmp(prev2_wd, "COMMENT") == 0 && + strcasecmp(prev_wd, "ON") == 0) { char *list_COMMENT[] = - {"DATABASE", "INDEX", "RULE", "SCHEMA", "SEQUENCE", "TABLE", "TYPE", "VIEW", - "COLUMN", "AGGREGATE", "FUNCTION", "OPERATOR", "TRIGGER", "CONSTRAINT", - "DOMAIN", NULL}; + {"DATABASE", "INDEX", "RULE", "SCHEMA", "SEQUENCE", "TABLE", + "TYPE", "VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "OPERATOR", + "TRIGGER", "CONSTRAINT", "DOMAIN", NULL}; COMPLETE_WITH_LIST(list_COMMENT); } - else if (strcasecmp(prev4_wd, "COMMENT") == 0 && strcasecmp(prev3_wd, "ON") == 0) + else if (strcasecmp(prev4_wd, "COMMENT") == 0 && + strcasecmp(prev3_wd, "ON") == 0) COMPLETE_WITH_CONST("IS"); /* COPY */ @@ -483,7 +514,8 @@ psql_completion(char *text, int start, int end) */ else if (strcasecmp(prev_wd, "COPY") == 0 || strcasecmp(prev_wd, "\\copy") == 0 || - (strcasecmp(prev2_wd, "COPY") == 0 && strcasecmp(prev_wd, "BINARY") == 0)) + (strcasecmp(prev2_wd, "COPY") == 0 && + strcasecmp(prev_wd, "BINARY") == 0)) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* If we have COPY|BINARY , complete it with "TO" or "FROM" */ else if (strcasecmp(prev2_wd, "COPY") == 0 || @@ -497,24 +529,29 @@ psql_completion(char *text, int start, int end) /* CREATE INDEX */ /* First off we complete CREATE UNIQUE with "INDEX" */ - else if (strcasecmp(prev2_wd, "CREATE") == 0 && strcasecmp(prev_wd, "UNIQUE") == 0) + else if (strcasecmp(prev2_wd, "CREATE") == 0 && + strcasecmp(prev_wd, "UNIQUE") == 0) COMPLETE_WITH_CONST("INDEX"); /* If we have CREATE|UNIQUE INDEX , then add "ON" */ else if (strcasecmp(prev2_wd, "INDEX") == 0 && - (strcasecmp(prev3_wd, "CREATE") == 0 || strcasecmp(prev3_wd, "UNIQUE") == 0)) + (strcasecmp(prev3_wd, "CREATE") == 0 || + strcasecmp(prev3_wd, "UNIQUE") == 0)) COMPLETE_WITH_CONST("ON"); /* Complete ... INDEX ON with a list of tables */ - else if ((strcasecmp(prev3_wd, "INDEX") == 0 && strcasecmp(prev_wd, "ON") == 0) || (0)) + else if (strcasecmp(prev3_wd, "INDEX") == 0 && + strcasecmp(prev_wd, "ON") == 0) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* * Complete INDEX ON with a list of table columns * (which should really be in parens) */ - else if (strcasecmp(prev4_wd, "INDEX") == 0 && strcasecmp(prev2_wd, "ON") == 0) + else if (strcasecmp(prev4_wd, "INDEX") == 0 && + strcasecmp(prev2_wd, "ON") == 0) COMPLETE_WITH_ATTR(prev_wd); /* same if you put in USING */ - else if ((strcasecmp(prev4_wd, "ON") == 0 && strcasecmp(prev2_wd, "USING") == 0)) + else if (strcasecmp(prev4_wd, "ON") == 0 && + strcasecmp(prev2_wd, "USING") == 0) COMPLETE_WITH_ATTR(prev3_wd); /* Complete USING with an index method */ else if (strcasecmp(prev_wd, "USING") == 0) @@ -526,7 +563,8 @@ psql_completion(char *text, int start, int end) /* CREATE RULE */ /* Complete "CREATE RULE " with "AS" */ - else if (strcasecmp(prev3_wd, "CREATE") == 0 && strcasecmp(prev2_wd, "RULE") == 0) + else if (strcasecmp(prev3_wd, "CREATE") == 0 && + strcasecmp(prev2_wd, "RULE") == 0) COMPLETE_WITH_CONST("AS"); /* Complete "CREATE RULE AS with "ON" */ else if (strcasecmp(prev4_wd, "CREATE") == 0 && @@ -538,7 +576,8 @@ psql_completion(char *text, int start, int end) strcasecmp(prev2_wd, "AS") == 0 && strcasecmp(prev_wd, "ON") == 0) { - char *rule_events[] = {"SELECT", "UPDATE", "INSERT", "DELETE", NULL}; + char *rule_events[] = {"SELECT", "UPDATE", "INSERT", + "DELETE", NULL}; COMPLETE_WITH_LIST(rule_events); } @@ -556,7 +595,8 @@ psql_completion(char *text, int start, int end) /* CREATE TABLE */ /* Complete CREATE TEMP with "TABLE" */ - else if (strcasecmp(prev2_wd, "CREATE") == 0 && strcasecmp(prev_wd, "TEMP") == 0) + else if (strcasecmp(prev2_wd, "CREATE") == 0 && + strcasecmp(prev_wd, "TEMP") == 0) COMPLETE_WITH_CONST("TABLE"); /* CREATE TRIGGER */ @@ -564,7 +604,8 @@ psql_completion(char *text, int start, int end) /* CREATE VIEW */ /* Complete "CREATE VIEW " with "AS" */ - else if (strcasecmp(prev3_wd, "CREATE") == 0 && strcasecmp(prev2_wd, "VIEW") == 0) + else if (strcasecmp(prev3_wd, "CREATE") == 0 && + strcasecmp(prev2_wd, "VIEW") == 0) COMPLETE_WITH_CONST("AS"); /* Complete "CREATE VIEW AS with "SELECT" */ else if (strcasecmp(prev4_wd, "CREATE") == 0 && @@ -585,10 +626,12 @@ psql_completion(char *text, int start, int end) strcasecmp(prev2_wd, "AFTER") == 0)) COMPLETE_WITH_CONST("FROM"); /* Complete DELETE FROM with a list of tables */ - else if (strcasecmp(prev2_wd, "DELETE") == 0 && strcasecmp(prev_wd, "FROM") == 0) + else if (strcasecmp(prev2_wd, "DELETE") == 0 && + strcasecmp(prev_wd, "FROM") == 0) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* Complete DELETE FROM
with "WHERE" (perhaps a safe idea?) */ - else if (strcasecmp(prev3_wd, "DELETE") == 0 && strcasecmp(prev2_wd, "FROM") == 0) + else if (strcasecmp(prev3_wd, "DELETE") == 0 && + strcasecmp(prev2_wd, "FROM") == 0) COMPLETE_WITH_CONST("WHERE"); /* EXPLAIN */ @@ -598,19 +641,22 @@ psql_completion(char *text, int start, int end) * the list of SQL commands */ else if (strcasecmp(prev_wd, "EXPLAIN") == 0 || - (strcasecmp(prev2_wd, "EXPLAIN") == 0 && strcasecmp(prev_wd, "VERBOSE") == 0)) + (strcasecmp(prev2_wd, "EXPLAIN") == 0 && + strcasecmp(prev_wd, "VERBOSE") == 0)) COMPLETE_WITH_LIST(sql_commands); /* FETCH && MOVE */ /* Complete FETCH with one of FORWARD, BACKWARD, RELATIVE */ - else if (strcasecmp(prev_wd, "FETCH") == 0 || strcasecmp(prev_wd, "MOVE") == 0) + else if (strcasecmp(prev_wd, "FETCH") == 0 || + strcasecmp(prev_wd, "MOVE") == 0) { char *list_FETCH1[] = {"FORWARD", "BACKWARD", "RELATIVE", NULL}; COMPLETE_WITH_LIST(list_FETCH1); } /* Complete FETCH with one of ALL, NEXT, PRIOR */ - else if (strcasecmp(prev2_wd, "FETCH") == 0 || strcasecmp(prev2_wd, "MOVE") == 0) + else if (strcasecmp(prev2_wd, "FETCH") == 0 || + strcasecmp(prev2_wd, "MOVE") == 0) { char *list_FETCH2[] = {"ALL", "NEXT", "PRIOR", NULL}; @@ -621,7 +667,8 @@ psql_completion(char *text, int start, int end) * Complete FETCH with "FROM" or "TO". (Is there a * difference? If not, remove one.) */ - else if (strcasecmp(prev3_wd, "FETCH") == 0 || strcasecmp(prev3_wd, "MOVE") == 0) + else if (strcasecmp(prev3_wd, "FETCH") == 0 || + strcasecmp(prev3_wd, "MOVE") == 0) { char *list_FROMTO[] = {"FROM", "TO", NULL}; @@ -630,14 +677,16 @@ psql_completion(char *text, int start, int end) /* GRANT && REVOKE*/ /* Complete GRANT/REVOKE with a list of privileges */ - else if (strcasecmp(prev_wd, "GRANT") == 0 || strcasecmp(prev_wd, "REVOKE") == 0) + else if (strcasecmp(prev_wd, "GRANT") == 0 || + strcasecmp(prev_wd, "REVOKE") == 0) { char *list_privileg[] = {"SELECT", "INSERT", "UPDATE", "DELETE", "RULE", "REFERENCES", "TRIGGER", "CREATE", "TEMPORARY", "EXECUTE", "USAGE", "ALL", NULL}; COMPLETE_WITH_LIST(list_privileg); } /* Complete GRANT/REVOKE with "ON" */ - else if (strcasecmp(prev2_wd, "GRANT") == 0 || strcasecmp(prev2_wd, "REVOKE") == 0) + else if (strcasecmp(prev2_wd, "GRANT") == 0 || + strcasecmp(prev2_wd, "REVOKE") == 0) COMPLETE_WITH_CONST("ON"); /* @@ -646,16 +695,19 @@ psql_completion(char *text, int start, int end) * * XXX should also offer DATABASE, FUNCTION, LANGUAGE, SCHEMA here */ - else if ((strcasecmp(prev3_wd, "GRANT") == 0 || strcasecmp(prev3_wd, "REVOKE") == 0) && + else if ((strcasecmp(prev3_wd, "GRANT") == 0 || + strcasecmp(prev3_wd, "REVOKE") == 0) && strcasecmp(prev_wd, "ON") == 0) COMPLETE_WITH_QUERY("SELECT relname FROM pg_catalog.pg_class " "WHERE relkind in ('r','i','S','v') AND " "substr(relname,1,%d)='%s' AND pg_catalog.pg_table_is_visible(oid)"); /* Complete "GRANT * ON * " with "TO" */ - else if (strcasecmp(prev4_wd, "GRANT") == 0 && strcasecmp(prev2_wd, "ON") == 0) + else if (strcasecmp(prev4_wd, "GRANT") == 0 && + strcasecmp(prev2_wd, "ON") == 0) COMPLETE_WITH_CONST("TO"); /* Complete "REVOKE * ON * " with "FROM" */ - else if (strcasecmp(prev4_wd, "REVOKE") == 0 && strcasecmp(prev2_wd, "ON") == 0) + else if (strcasecmp(prev4_wd, "REVOKE") == 0 && + strcasecmp(prev2_wd, "ON") == 0) COMPLETE_WITH_CONST("FROM"); /* @@ -668,24 +720,29 @@ psql_completion(char *text, int start, int end) else if (strcasecmp(prev_wd, "INSERT") == 0) COMPLETE_WITH_CONST("INTO"); /* Complete INSERT INTO with table names */ - else if (strcasecmp(prev2_wd, "INSERT") == 0 && strcasecmp(prev_wd, "INTO") == 0) + else if (strcasecmp(prev2_wd, "INSERT") == 0 && + strcasecmp(prev_wd, "INTO") == 0) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* Complete "INSERT INTO
(" with attribute names */ - else if (rl_line_buffer[start - 1] == '(' && strcasecmp(prev3_wd, "INSERT") == 0 && strcasecmp(prev2_wd, "INTO") == 0) + else if (rl_line_buffer[start - 1] == '(' && + strcasecmp(prev3_wd, "INSERT") == 0 && + strcasecmp(prev2_wd, "INTO") == 0) COMPLETE_WITH_ATTR(prev_wd); /* * Complete INSERT INTO
with "VALUES" or "SELECT" or "DEFAULT * VALUES" */ - else if (strcasecmp(prev3_wd, "INSERT") == 0 && strcasecmp(prev2_wd, "INTO") == 0) + else if (strcasecmp(prev3_wd, "INSERT") == 0 && + strcasecmp(prev2_wd, "INTO") == 0) { char *list_INSERT[] = {"DEFAULT VALUES", "SELECT", "VALUES", NULL}; COMPLETE_WITH_LIST(list_INSERT); } /* Complete INSERT INTO
(attribs) with "VALUES" or "SELECT" */ - else if (strcasecmp(prev4_wd, "INSERT") == 0 && strcasecmp(prev3_wd, "INTO") == 0 && + else if (strcasecmp(prev4_wd, "INSERT") == 0 && + strcasecmp(prev3_wd, "INTO") == 0 && prev_wd[strlen(prev_wd) - 1] == ')') { char *list_INSERT[] = {"SELECT", "VALUES", NULL}; @@ -694,30 +751,37 @@ psql_completion(char *text, int start, int end) } /* Insert an open parenthesis after "VALUES" */ - else if (strcasecmp(prev_wd, "VALUES") == 0 && strcasecmp(prev2_wd, "DEFAULT") != 0) + else if (strcasecmp(prev_wd, "VALUES") == 0 && + strcasecmp(prev2_wd, "DEFAULT") != 0) COMPLETE_WITH_CONST("("); /* LOCK */ /* Complete LOCK [TABLE] with a list of tables */ - else if ((strcasecmp(prev_wd, "LOCK") == 0) || - (strcasecmp(prev_wd, "TABLE") == 0 && strcasecmp(prev2_wd, "LOCK"))) + else if (strcasecmp(prev_wd, "LOCK") == 0 || + (strcasecmp(prev_wd, "TABLE") == 0 && + strcasecmp(prev2_wd, "LOCK"))) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* For the following, handle the case of a single table only for now */ /* Complete LOCK [TABLE]
with "IN" */ - else if ((strcasecmp(prev2_wd, "LOCK") == 0 && strcasecmp(prev_wd, "TABLE")) || - (strcasecmp(prev2_wd, "TABLE") == 0 && strcasecmp(prev3_wd, "LOCK") == 0)) + else if ((strcasecmp(prev2_wd, "LOCK") == 0 && + strcasecmp(prev_wd, "TABLE")) || + (strcasecmp(prev2_wd, "TABLE") == 0 && + strcasecmp(prev3_wd, "LOCK") == 0)) COMPLETE_WITH_CONST("IN"); /* Complete LOCK [TABLE]
IN with a lock mode */ else if (strcasecmp(prev_wd, "IN") == 0 && (strcasecmp(prev3_wd, "LOCK") == 0 || - (strcasecmp(prev3_wd, "TABLE") == 0 && strcasecmp(prev3_wd, "LOCK")))) + (strcasecmp(prev3_wd, "TABLE") == 0 && + strcasecmp(prev3_wd, "LOCK")))) { - char *lock_modes[] = {"ACCESS SHARE MODE", "ROW SHARE MODE", "ROW EXCLUSIVE MODE", - "SHARE UPDATE EXCLUSIVE MODE", "SHARE MODE", "SHARE ROW EXCLUSIVE MODE", - "EXCLUSIVE MODE", "ACCESS EXCLUSIVE MODE", NULL}; + char *lock_modes[] = {"ACCESS SHARE MODE", + "ROW SHARE MODE", "ROW EXCLUSIVE MODE", + "SHARE UPDATE EXCLUSIVE MODE", "SHARE MODE", + "SHARE ROW EXCLUSIVE MODE", + "EXCLUSIVE MODE", "ACCESS EXCLUSIVE MODE", NULL}; COMPLETE_WITH_LIST(lock_modes); } @@ -748,18 +812,21 @@ psql_completion(char *text, int start, int end) /* SET, RESET, SHOW */ /* Complete with a variable name */ - else if ((strcasecmp(prev_wd, "SET") == 0 && strcasecmp(prev3_wd, "UPDATE") != 0) || + else if ((strcasecmp(prev_wd, "SET") == 0 && + strcasecmp(prev3_wd, "UPDATE") != 0) || strcasecmp(prev_wd, "RESET") == 0 || strcasecmp(prev_wd, "SHOW") == 0) COMPLETE_WITH_LIST(pgsql_variables); /* Complete "SET TRANSACTION ISOLOLATION LEVEL" */ - else if (strcasecmp(prev2_wd, "SET") == 0 && strcasecmp(prev_wd, "TRANSACTION") == 0) + else if (strcasecmp(prev2_wd, "SET") == 0 && + strcasecmp(prev_wd, "TRANSACTION") == 0) COMPLETE_WITH_CONST("ISOLATION"); else if (strcasecmp(prev3_wd, "SET") == 0 && strcasecmp(prev2_wd, "TRANSACTION") == 0 && strcasecmp(prev_wd, "ISOLATION") == 0) COMPLETE_WITH_CONST("LEVEL"); - else if ((strcasecmp(prev4_wd, "SET") == 0 || strcasecmp(prev4_wd, "AS") == 0) && + else if ((strcasecmp(prev4_wd, "SET") == 0 || + strcasecmp(prev4_wd, "AS") == 0) && strcasecmp(prev3_wd, "TRANSACTION") == 0 && strcasecmp(prev2_wd, "ISOLATION") == 0 && strcasecmp(prev_wd, "LEVEL") == 0) @@ -774,14 +841,16 @@ psql_completion(char *text, int start, int end) strcasecmp(prev_wd, "READ") == 0) COMPLETE_WITH_CONST("COMMITTED"); /* Complete SET CONSTRAINTS with DEFERRED|IMMEDIATE */ - else if (strcasecmp(prev3_wd, "SET") == 0 && strcasecmp(prev2_wd, "CONSTRAINTS") == 0) + else if (strcasecmp(prev3_wd, "SET") == 0 && + strcasecmp(prev2_wd, "CONSTRAINTS") == 0) { char *constraint_list[] = {"DEFERRED", "IMMEDIATE", NULL}; COMPLETE_WITH_LIST(constraint_list); } /* Complete SET SESSION with AUTHORIZATION or CHARACTERISTICS... */ - else if (strcasecmp(prev2_wd, "SET") == 0 && strcasecmp(prev_wd, "SESSION") == 0) + else if (strcasecmp(prev2_wd, "SET") == 0 && + strcasecmp(prev_wd, "SESSION") == 0) { char *my_list[] = {"AUTHORIZATION", "CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL", @@ -804,7 +873,8 @@ psql_completion(char *text, int start, int end) { if (strcasecmp(prev2_wd, "DateStyle") == 0) { - char *my_list[] = {"'ISO'", "'SQL'", "'Postgres'", "'European'", "'NonEuropean'", "'German'", "DEFAULT", NULL}; + char *my_list[] = {"'ISO'", "'SQL'", "'Postgres'", + "'European'", "'NonEuropean'", "'German'", "DEFAULT", NULL}; COMPLETE_WITH_LIST(my_list); } @@ -849,7 +919,9 @@ psql_completion(char *text, int start, int end) /* VACUUM */ else if (strcasecmp(prev_wd, "VACUUM") == 0) COMPLETE_WITH_QUERY("SELECT relname FROM pg_catalog.pg_class WHERE relkind='r' and substr(relname,1,%d)='%s' and pg_catalog.pg_table_is_visible(oid) UNION SELECT 'FULL'::name UNION SELECT 'ANALYZE'::name"); - else if (strcasecmp(prev2_wd, "VACUUM") == 0 && (strcasecmp(prev_wd, "FULL") == 0 || strcasecmp(prev_wd, "ANALYZE") == 0)) + else if (strcasecmp(prev2_wd, "VACUUM") == 0 && + (strcasecmp(prev_wd, "FULL") == 0 || + strcasecmp(prev_wd, "ANALYZE") == 0)) COMPLETE_WITH_QUERY(Query_for_list_of_tables); /* WHERE */ @@ -871,9 +943,9 @@ psql_completion(char *text, int start, int end) COMPLETE_WITH_LIST(sql_commands); else if (strcmp(prev_wd, "\\pset") == 0) { - char *my_list[] = {"format", "border", "expanded", "null", "fieldsep", - "tuples_only", "title", "tableattr", "pager", - "recordsep", NULL}; + char *my_list[] = {"format", "border", "expanded", + "null", "fieldsep", "tuples_only", "title", "tableattr", "pager", + "recordsep", NULL}; COMPLETE_WITH_LIST(my_list); } @@ -1015,7 +1087,8 @@ complete_from_query(char *text, int state) /* Find something that matches */ if (result && PQresultStatus(result) == PGRES_TUPLES_OK) - while (list_index < PQntuples(result) && (item = PQgetvalue(result, list_index++, 0))) + while (list_index < PQntuples(result) && + (item = PQgetvalue(result, list_index++, 0))) if (strncasecmp(text, item, string_length) == 0) return xstrdup(item);