Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 1906cc0

Browse files
committed
Make saner the tab completion of INSERT and DELETE in psql
When specified directly as DML queries, INSERT was not getting always completed to "INSERT INTO", same for DELETE with "DELETE FROM". This makes the completion behavior more consistent for both commands, saving a few keystrokes. Commands on policies, triggers, grant/revoke, etc. require only DELETE as completion keyword. Author: Haiying Tang Reviewed-by: Dilip Kumar, Julien Rouhaud Discussion: https://postgr.es/m/OS0PR01MB61135AE2B07CCD1AB8C6A0F6FB549@OS0PR01MB6113.jpnprd01.prod.outlook.com
1 parent db16c65 commit 1906cc0

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/bin/psql/tab-complete.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -1491,7 +1491,7 @@ psql_completion(const char *text, int start, int end)
14911491
"ABORT", "ALTER", "ANALYZE", "BEGIN", "CALL", "CHECKPOINT", "CLOSE", "CLUSTER",
14921492
"COMMENT", "COMMIT", "COPY", "CREATE", "DEALLOCATE", "DECLARE",
14931493
"DELETE FROM", "DISCARD", "DO", "DROP", "END", "EXECUTE", "EXPLAIN",
1494-
"FETCH", "GRANT", "IMPORT FOREIGN SCHEMA", "INSERT", "LISTEN", "LOAD", "LOCK",
1494+
"FETCH", "GRANT", "IMPORT FOREIGN SCHEMA", "INSERT INTO", "LISTEN", "LOAD", "LOCK",
14951495
"MOVE", "NOTIFY", "PREPARE",
14961496
"REASSIGN", "REFRESH MATERIALIZED VIEW", "REINDEX", "RELEASE",
14971497
"RESET", "REVOKE", "ROLLBACK",
@@ -2386,7 +2386,7 @@ psql_completion(const char *text, int start, int end)
23862386
" UNION ALL SELECT '('");
23872387
/* Complete COPY ( with legal query commands */
23882388
else if (Matches("COPY|\\copy", "("))
2389-
COMPLETE_WITH("SELECT", "TABLE", "VALUES", "INSERT", "UPDATE", "DELETE", "WITH");
2389+
COMPLETE_WITH("SELECT", "TABLE", "VALUES", "INSERT INTO", "UPDATE", "DELETE FROM", "WITH");
23902390
/* Complete COPY <sth> */
23912391
else if (Matches("COPY|\\copy", MatchAny))
23922392
COMPLETE_WITH("FROM", "TO");
@@ -3080,7 +3080,7 @@ psql_completion(const char *text, int start, int end)
30803080
COMPLETE_WITH("FOR");
30813081

30823082
/* DELETE --- can be inside EXPLAIN, RULE, etc */
3083-
/* ... despite which, only complete DELETE with FROM at start of line */
3083+
/* Complete DELETE with "FROM" */
30843084
else if (Matches("DELETE"))
30853085
COMPLETE_WITH("FROM");
30863086
/* Complete DELETE FROM with a list of tables */
@@ -3208,7 +3208,7 @@ psql_completion(const char *text, int start, int end)
32083208
* EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
32093209
*/
32103210
else if (Matches("EXPLAIN"))
3211-
COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE",
3211+
COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE",
32123212
"ANALYZE", "VERBOSE");
32133213
else if (HeadMatches("EXPLAIN", "(*") &&
32143214
!HeadMatches("EXPLAIN", "(*)"))
@@ -3227,12 +3227,12 @@ psql_completion(const char *text, int start, int end)
32273227
COMPLETE_WITH("TEXT", "XML", "JSON", "YAML");
32283228
}
32293229
else if (Matches("EXPLAIN", "ANALYZE"))
3230-
COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE",
3230+
COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE",
32313231
"VERBOSE");
32323232
else if (Matches("EXPLAIN", "(*)") ||
32333233
Matches("EXPLAIN", "VERBOSE") ||
32343234
Matches("EXPLAIN", "ANALYZE", "VERBOSE"))
3235-
COMPLETE_WITH("SELECT", "INSERT", "DELETE", "UPDATE", "DECLARE");
3235+
COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE");
32363236

32373237
/* FETCH && MOVE */
32383238

@@ -3587,7 +3587,7 @@ psql_completion(const char *text, int start, int end)
35873587

35883588
/* PREPARE xx AS */
35893589
else if (Matches("PREPARE", MatchAny, "AS"))
3590-
COMPLETE_WITH("SELECT", "UPDATE", "INSERT", "DELETE FROM");
3590+
COMPLETE_WITH("SELECT", "UPDATE", "INSERT INTO", "DELETE FROM");
35913591

35923592
/*
35933593
* PREPARE TRANSACTION is missing on purpose. It's intended for transaction

0 commit comments

Comments
 (0)