diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 51ae248ed8..6598c5369a 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -1491,7 +1491,7 @@ psql_completion(const char *text, int start, int end) "ABORT", "ALTER", "ANALYZE", "BEGIN", "CALL", "CHECKPOINT", "CLOSE", "CLUSTER", "COMMENT", "COMMIT", "COPY", "CREATE", "DEALLOCATE", "DECLARE", "DELETE FROM", "DISCARD", "DO", "DROP", "END", "EXECUTE", "EXPLAIN", - "FETCH", "GRANT", "IMPORT FOREIGN SCHEMA", "INSERT", "LISTEN", "LOAD", "LOCK", + "FETCH", "GRANT", "IMPORT FOREIGN SCHEMA", "INSERT INTO", "LISTEN", "LOAD", "LOCK", "MOVE", "NOTIFY", "PREPARE", "REASSIGN", "REFRESH MATERIALIZED VIEW", "REINDEX", "RELEASE", "RESET", "REVOKE", "ROLLBACK", @@ -2386,7 +2386,7 @@ psql_completion(const char *text, int start, int end) " UNION ALL SELECT '('"); /* Complete COPY ( with legal query commands */ else if (Matches("COPY|\\copy", "(")) - COMPLETE_WITH("SELECT", "TABLE", "VALUES", "INSERT", "UPDATE", "DELETE", "WITH"); + COMPLETE_WITH("SELECT", "TABLE", "VALUES", "INSERT INTO", "UPDATE", "DELETE FROM", "WITH"); /* Complete COPY */ else if (Matches("COPY|\\copy", MatchAny)) COMPLETE_WITH("FROM", "TO"); @@ -3080,7 +3080,7 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH("FOR"); /* DELETE --- can be inside EXPLAIN, RULE, etc */ - /* ... despite which, only complete DELETE with FROM at start of line */ + /* Complete DELETE with "FROM" */ else if (Matches("DELETE")) COMPLETE_WITH("FROM"); /* Complete DELETE FROM with a list of tables */ @@ -3208,7 +3208,7 @@ psql_completion(const char *text, int start, int end) * EXPLAIN [ ANALYZE ] [ VERBOSE ] statement */ else if (Matches("EXPLAIN")) - COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", + COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE", "ANALYZE", "VERBOSE"); else if (HeadMatches("EXPLAIN", "(*") && !HeadMatches("EXPLAIN", "(*)")) @@ -3227,12 +3227,12 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH("TEXT", "XML", "JSON", "YAML"); } else if (Matches("EXPLAIN", "ANALYZE")) - COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE", + COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE", "VERBOSE"); else if (Matches("EXPLAIN", "(*)") || Matches("EXPLAIN", "VERBOSE") || Matches("EXPLAIN", "ANALYZE", "VERBOSE")) - COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE"); + COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE"); /* FETCH && MOVE */ @@ -3587,7 +3587,7 @@ psql_completion(const char *text, int start, int end) /* PREPARE xx AS */ else if (Matches("PREPARE", MatchAny, "AS")) - COMPLETE_WITH("SELECT", "UPDATE", "INSERT", "DELETE FROM"); + COMPLETE_WITH("SELECT", "UPDATE", "INSERT INTO", "DELETE FROM"); /* * PREPARE TRANSACTION is missing on purpose. It's intended for transaction