Skip to content

Commit a5b336b

Browse files
committed
Improve psql tab completion for COMMENT
Completion is added for more object types, like domain constraints, text search-ish objects or policies. Moreover, the area is reorganized, changing the list of objects supported by COMMENT to be in the same order as the documentation to ease future additions. Author: Ken Kato Reviewed-by: Fujii Masao, Shinya Kato, Suraj Khamkar, Michael Paquier Discussion: https://postgr.es/m/6e0c2f3f657b229bea32d098d118f307@oss.nttdata.com
1 parent e7428a9 commit a5b336b

File tree

1 file changed

+67
-18
lines changed

1 file changed

+67
-18
lines changed

src/bin/psql/tab-complete.c

+67-18
Original file line numberDiff line numberDiff line change
@@ -2411,38 +2411,87 @@ psql_completion(const char *text, int start, int end)
24112411
else if (Matches("COMMENT"))
24122412
COMPLETE_WITH("ON");
24132413
else if (Matches("COMMENT", "ON"))
2414-
COMPLETE_WITH("ACCESS METHOD", "CAST", "COLLATION", "CONVERSION",
2415-
"DATABASE", "EVENT TRIGGER", "EXTENSION",
2416-
"FOREIGN DATA WRAPPER", "FOREIGN TABLE", "SERVER",
2417-
"INDEX", "LANGUAGE", "POLICY", "PUBLICATION", "RULE",
2418-
"SCHEMA", "SEQUENCE", "STATISTICS", "SUBSCRIPTION",
2419-
"TABLE", "TYPE", "VIEW", "MATERIALIZED VIEW",
2420-
"COLUMN", "AGGREGATE", "FUNCTION",
2421-
"PROCEDURE", "ROUTINE",
2422-
"OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN",
2423-
"LARGE OBJECT", "TABLESPACE", "TEXT SEARCH", "ROLE");
2414+
COMPLETE_WITH("ACCESS METHOD", "AGGREGATE", "CAST", "COLLATION",
2415+
"COLUMN", "CONSTRAINT", "CONVERSION", "DATABASE",
2416+
"DOMAIN", "EXTENSION", "EVENT TRIGGER",
2417+
"FOREIGN DATA WRAPPER", "FOREIGN TABLE",
2418+
"FUNCTION", "INDEX", "LANGUAGE", "LARGE OBJECT",
2419+
"MATERIALIZED VIEW", "OPERATOR", "POLICY",
2420+
"PROCEDURE", "PROCEDURAL LANGUAGE", "PUBLICATION", "ROLE",
2421+
"ROUTINE", "RULE", "SCHEMA", "SEQUENCE", "SERVER",
2422+
"STATISTICS", "SUBSCRIPTION", "TABLE",
2423+
"TABLESPACE", "TEXT SEARCH", "TRANSFORM FOR",
2424+
"TRIGGER", "TYPE", "VIEW");
24242425
else if (Matches("COMMENT", "ON", "ACCESS", "METHOD"))
24252426
COMPLETE_WITH_QUERY(Query_for_list_of_access_methods);
2426-
else if (Matches("COMMENT", "ON", "FOREIGN"))
2427-
COMPLETE_WITH("DATA WRAPPER", "TABLE");
2428-
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH"))
2429-
COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
24302427
else if (Matches("COMMENT", "ON", "CONSTRAINT"))
24312428
COMPLETE_WITH_QUERY(Query_for_all_table_constraints);
24322429
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny))
24332430
COMPLETE_WITH("ON");
24342431
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON"))
24352432
{
24362433
completion_info_charp = prev2_wd;
2437-
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint);
2434+
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint
2435+
" UNION SELECT 'DOMAIN'");
24382436
}
2439-
else if (Matches("COMMENT", "ON", "MATERIALIZED", "VIEW"))
2440-
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
2437+
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON", "DOMAIN"))
2438+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL);
24412439
else if (Matches("COMMENT", "ON", "EVENT", "TRIGGER"))
24422440
COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
2441+
else if (Matches("COMMENT", "ON", "FOREIGN"))
2442+
COMPLETE_WITH("DATA WRAPPER", "TABLE");
2443+
else if (Matches("COMMENT", "ON", "FOREIGN", "TABLE"))
2444+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL);
2445+
else if (Matches("COMMENT", "ON", "MATERIALIZED", "VIEW"))
2446+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
2447+
else if (Matches("COMMENT", "ON", "POLICY"))
2448+
COMPLETE_WITH_QUERY(Query_for_list_of_policies);
2449+
else if (Matches("COMMENT", "ON", "POLICY", MatchAny))
2450+
COMPLETE_WITH("ON");
2451+
else if (Matches("COMMENT", "ON", "POLICY", MatchAny, "ON"))
2452+
{
2453+
completion_info_charp = prev2_wd;
2454+
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_policy);
2455+
}
2456+
else if (Matches("COMMENT", "ON", "PROCEDURAL", "LANGUAGE"))
2457+
COMPLETE_WITH_QUERY(Query_for_list_of_languages);
2458+
else if (Matches("COMMENT", "ON", "RULE", MatchAny))
2459+
COMPLETE_WITH("ON");
2460+
else if (Matches("COMMENT", "ON", "RULE", MatchAny, "ON"))
2461+
{
2462+
completion_info_charp = prev2_wd;
2463+
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule);
2464+
}
2465+
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH"))
2466+
COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
2467+
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "CONFIGURATION"))
2468+
COMPLETE_WITH_QUERY(Query_for_list_of_ts_configurations);
2469+
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "DICTIONARY"))
2470+
COMPLETE_WITH_QUERY(Query_for_list_of_ts_dictionaries);
2471+
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "PARSER"))
2472+
COMPLETE_WITH_QUERY(Query_for_list_of_ts_parsers);
2473+
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "TEMPLATE"))
2474+
COMPLETE_WITH_QUERY(Query_for_list_of_ts_templates);
2475+
else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR"))
2476+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
2477+
else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR", MatchAny))
2478+
COMPLETE_WITH("LANGUAGE");
2479+
else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR", MatchAny, "LANGUAGE"))
2480+
{
2481+
completion_info_charp = prev2_wd;
2482+
COMPLETE_WITH_QUERY(Query_for_list_of_languages);
2483+
}
2484+
else if (Matches("COMMENT", "ON", "TRIGGER", MatchAny))
2485+
COMPLETE_WITH("ON");
2486+
else if (Matches("COMMENT", "ON", "TRIGGER", MatchAny, "ON"))
2487+
{
2488+
completion_info_charp = prev2_wd;
2489+
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger);
2490+
}
24432491
else if (Matches("COMMENT", "ON", MatchAny, MatchAnyExcept("IS")) ||
24442492
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAnyExcept("IS")) ||
2445-
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")))
2493+
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")) ||
2494+
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")))
24462495
COMPLETE_WITH("IS");
24472496

24482497
/* COPY */

0 commit comments

Comments
 (0)