diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2022-11-01 12:07:40 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2022-11-01 12:07:40 +0100 |
commit | 2ea5de296ef29d808e8cbc41f6053e33b7e7cf18 (patch) | |
tree | c513b7edca5117a312b65e70a99af8756fb0f66f /src | |
parent | 0043aa6b8597809b19c420cb5e635b4d832adccc (diff) | |
download | postgresql-2ea5de296ef29d808e8cbc41f6053e33b7e7cf18.tar.gz postgresql-2ea5de296ef29d808e8cbc41f6053e33b7e7cf18.zip |
psql: Improve tab completion for ALTER TABLE on identity columns
- Add tab completion for ALTER SEQUENCE … START …
- Add tab completion for ALTER COLUMN … SET GENERATED …
- Add tab completion for ALTER COLUMN … SET <sequence option>
- Add tab completion for ALTER COLUMN … ADD GENERATED … AS IDENTITY
Author: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Reviewed-by: Matheus Alcantara <mths.dev@pm.me>
Discussion: https://www.postgresql.org/message-id/flat/87mta1jfax.fsf@wibble.ilmari.org
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/psql/tab-complete.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index a64571215b3..4c45e4747a9 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -2104,7 +2104,7 @@ psql_completion(const char *text, int start, int end) /* ALTER SEQUENCE <name> */ else if (Matches("ALTER", "SEQUENCE", MatchAny)) COMPLETE_WITH("AS", "INCREMENT", "MINVALUE", "MAXVALUE", "RESTART", - "NO", "CACHE", "CYCLE", "SET", "OWNED BY", + "START", "NO", "CACHE", "CYCLE", "SET", "OWNED BY", "OWNER TO", "RENAME TO"); /* ALTER SEQUENCE <name> AS */ else if (TailMatches("ALTER", "SEQUENCE", MatchAny, "AS")) @@ -2381,10 +2381,26 @@ psql_completion(const char *text, int start, int end) else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny) || Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny)) COMPLETE_WITH("TYPE", "SET", "RESET", "RESTART", "ADD", "DROP"); + /* ALTER TABLE ALTER [COLUMN] <foo> ADD */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "ADD") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "ADD")) + COMPLETE_WITH("GENERATED"); + /* ALTER TABLE ALTER [COLUMN] <foo> ADD GENERATED */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "ADD", "GENERATED") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "ADD", "GENERATED")) + COMPLETE_WITH("ALWAYS", "BY DEFAULT"); + /* ALTER TABLE ALTER [COLUMN] <foo> ADD GENERATED */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "ADD", "GENERATED", "ALWAYS") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "ADD", "GENERATED", "ALWAYS") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "ADD", "GENERATED", "BY", "DEFAULT") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "ADD", "GENERATED", "BY", "DEFAULT")) + COMPLETE_WITH("AS IDENTITY"); /* ALTER TABLE ALTER [COLUMN] <foo> SET */ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET") || Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET")) - COMPLETE_WITH("(", "COMPRESSION", "DEFAULT", "NOT NULL", "STATISTICS", "STORAGE"); + COMPLETE_WITH("(", "COMPRESSION", "DEFAULT", "GENERATED", "NOT NULL", "STATISTICS", "STORAGE", + /* a subset of ALTER SEQUENCE options */ + "INCREMENT", "MINVALUE", "MAXVALUE", "START", "NO", "CACHE", "CYCLE"); /* ALTER TABLE ALTER [COLUMN] <foo> SET ( */ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "(") || Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "(")) @@ -2393,6 +2409,14 @@ psql_completion(const char *text, int start, int end) else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "COMPRESSION") || Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "COMPRESSION")) COMPLETE_WITH("DEFAULT", "PGLZ", "LZ4"); + /* ALTER TABLE ALTER [COLUMN] <foo> SET GENERATED */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "GENERATED") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "GENERATED")) + COMPLETE_WITH("ALWAYS", "BY DEFAULT"); + /* ALTER TABLE ALTER [COLUMN] <foo> SET NO */ + else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "NO") || + Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "NO")) + COMPLETE_WITH("MINVALUE", "MAXVALUE", "CYCLE"); /* ALTER TABLE ALTER [COLUMN] <foo> SET STORAGE */ else if (Matches("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "SET", "STORAGE") || Matches("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "SET", "STORAGE")) |