diff options
| author | Fujii Masao | 2025-10-24 05:30:05 +0000 |
|---|---|---|
| committer | Fujii Masao | 2025-10-24 05:31:14 +0000 |
| commit | 14ee8e6403001c3788f2622cdcf81a8451502dc2 (patch) | |
| tree | de62539fdb5036f2993f0df341e75b705fb3e35e /src/bin/psql | |
| parent | 0758111f5d35b64dd5ddbc716bd05806b52ea183 (diff) | |
psql: Improve tab completion for large objects.
This commit enhances psql's tab completion support for large objects:
- Completes \lo_export <oid> with a file name
- Completes GRANT/REVOKE ... LARGE with OBJECT
- Completes ALTER DEFAULT PRIVILEGES GRANT/REVOKE ... LARGE with OBJECTS
Author: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Co-authored-by: Fujii Masao <masao.fujii@gmail.com>
Reviewed-by: Chao Li <lic@highgo.com>
Discussion: https://postgr.es/m/87y0syikki.fsf@wibble.ilmari.org
Diffstat (limited to 'src/bin/psql')
| -rw-r--r-- | src/bin/psql/tab-complete.in.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c index fa08059671b..36ea6a4d557 100644 --- a/src/bin/psql/tab-complete.in.c +++ b/src/bin/psql/tab-complete.in.c @@ -4553,13 +4553,10 @@ match_previous_words(int pattern_id, "ROUTINES IN SCHEMA", "SEQUENCES IN SCHEMA", "TABLES IN SCHEMA"); - else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "FOREIGN") || - TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, "ON", "FOREIGN")) - COMPLETE_WITH("DATA WRAPPER", "SERVER"); /* * Complete "GRANT/REVOKE * ON DATABASE/DOMAIN/..." with a list of - * appropriate objects. + * appropriate objects or keywords. * * Complete "GRANT/REVOKE * ON *" with "TO/FROM". */ @@ -4572,8 +4569,17 @@ match_previous_words(int pattern_id, COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains); else if (TailMatches("FUNCTION")) COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_functions); + else if (TailMatches("FOREIGN")) + COMPLETE_WITH("DATA WRAPPER", "SERVER"); else if (TailMatches("LANGUAGE")) COMPLETE_WITH_QUERY(Query_for_list_of_languages); + else if (TailMatches("LARGE")) + { + if (HeadMatches("ALTER", "DEFAULT", "PRIVILEGES")) + COMPLETE_WITH("OBJECTS"); + else + COMPLETE_WITH("OBJECT"); + } else if (TailMatches("PROCEDURE")) COMPLETE_WITH_VERSIONED_SCHEMA_QUERY(Query_for_list_of_procedures); else if (TailMatches("ROUTINE")) @@ -5531,7 +5537,8 @@ match_previous_words(int pattern_id, COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_views); else if (TailMatchesCS("\\cd|\\e|\\edit|\\g|\\gx|\\i|\\include|" "\\ir|\\include_relative|\\o|\\out|" - "\\s|\\w|\\write|\\lo_import")) + "\\s|\\w|\\write|\\lo_import") || + TailMatchesCS("\\lo_export", MatchAny)) COMPLETE_WITH_FILES("\\", false); /* gen_tabcomplete.pl ends special processing here */ |
