mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
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
This commit is contained in:
@ -2411,22 +2411,19 @@ psql_completion(const char *text, int start, int end)
|
|||||||
else if (Matches("COMMENT"))
|
else if (Matches("COMMENT"))
|
||||||
COMPLETE_WITH("ON");
|
COMPLETE_WITH("ON");
|
||||||
else if (Matches("COMMENT", "ON"))
|
else if (Matches("COMMENT", "ON"))
|
||||||
COMPLETE_WITH("ACCESS METHOD", "CAST", "COLLATION", "CONVERSION",
|
COMPLETE_WITH("ACCESS METHOD", "AGGREGATE", "CAST", "COLLATION",
|
||||||
"DATABASE", "EVENT TRIGGER", "EXTENSION",
|
"COLUMN", "CONSTRAINT", "CONVERSION", "DATABASE",
|
||||||
"FOREIGN DATA WRAPPER", "FOREIGN TABLE", "SERVER",
|
"DOMAIN", "EXTENSION", "EVENT TRIGGER",
|
||||||
"INDEX", "LANGUAGE", "POLICY", "PUBLICATION", "RULE",
|
"FOREIGN DATA WRAPPER", "FOREIGN TABLE",
|
||||||
"SCHEMA", "SEQUENCE", "STATISTICS", "SUBSCRIPTION",
|
"FUNCTION", "INDEX", "LANGUAGE", "LARGE OBJECT",
|
||||||
"TABLE", "TYPE", "VIEW", "MATERIALIZED VIEW",
|
"MATERIALIZED VIEW", "OPERATOR", "POLICY",
|
||||||
"COLUMN", "AGGREGATE", "FUNCTION",
|
"PROCEDURE", "PROCEDURAL LANGUAGE", "PUBLICATION", "ROLE",
|
||||||
"PROCEDURE", "ROUTINE",
|
"ROUTINE", "RULE", "SCHEMA", "SEQUENCE", "SERVER",
|
||||||
"OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN",
|
"STATISTICS", "SUBSCRIPTION", "TABLE",
|
||||||
"LARGE OBJECT", "TABLESPACE", "TEXT SEARCH", "ROLE");
|
"TABLESPACE", "TEXT SEARCH", "TRANSFORM FOR",
|
||||||
|
"TRIGGER", "TYPE", "VIEW");
|
||||||
else if (Matches("COMMENT", "ON", "ACCESS", "METHOD"))
|
else if (Matches("COMMENT", "ON", "ACCESS", "METHOD"))
|
||||||
COMPLETE_WITH_QUERY(Query_for_list_of_access_methods);
|
COMPLETE_WITH_QUERY(Query_for_list_of_access_methods);
|
||||||
else if (Matches("COMMENT", "ON", "FOREIGN"))
|
|
||||||
COMPLETE_WITH("DATA WRAPPER", "TABLE");
|
|
||||||
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH"))
|
|
||||||
COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
|
|
||||||
else if (Matches("COMMENT", "ON", "CONSTRAINT"))
|
else if (Matches("COMMENT", "ON", "CONSTRAINT"))
|
||||||
COMPLETE_WITH_QUERY(Query_for_all_table_constraints);
|
COMPLETE_WITH_QUERY(Query_for_all_table_constraints);
|
||||||
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny))
|
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny))
|
||||||
@ -2434,15 +2431,67 @@ psql_completion(const char *text, int start, int end)
|
|||||||
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON"))
|
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON"))
|
||||||
{
|
{
|
||||||
completion_info_charp = prev2_wd;
|
completion_info_charp = prev2_wd;
|
||||||
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint);
|
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_constraint
|
||||||
|
" UNION SELECT 'DOMAIN'");
|
||||||
}
|
}
|
||||||
else if (Matches("COMMENT", "ON", "MATERIALIZED", "VIEW"))
|
else if (Matches("COMMENT", "ON", "CONSTRAINT", MatchAny, "ON", "DOMAIN"))
|
||||||
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
|
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_domains, NULL);
|
||||||
else if (Matches("COMMENT", "ON", "EVENT", "TRIGGER"))
|
else if (Matches("COMMENT", "ON", "EVENT", "TRIGGER"))
|
||||||
COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
|
COMPLETE_WITH_QUERY(Query_for_list_of_event_triggers);
|
||||||
|
else if (Matches("COMMENT", "ON", "FOREIGN"))
|
||||||
|
COMPLETE_WITH("DATA WRAPPER", "TABLE");
|
||||||
|
else if (Matches("COMMENT", "ON", "FOREIGN", "TABLE"))
|
||||||
|
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_foreign_tables, NULL);
|
||||||
|
else if (Matches("COMMENT", "ON", "MATERIALIZED", "VIEW"))
|
||||||
|
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_matviews, NULL);
|
||||||
|
else if (Matches("COMMENT", "ON", "POLICY"))
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_policies);
|
||||||
|
else if (Matches("COMMENT", "ON", "POLICY", MatchAny))
|
||||||
|
COMPLETE_WITH("ON");
|
||||||
|
else if (Matches("COMMENT", "ON", "POLICY", MatchAny, "ON"))
|
||||||
|
{
|
||||||
|
completion_info_charp = prev2_wd;
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_policy);
|
||||||
|
}
|
||||||
|
else if (Matches("COMMENT", "ON", "PROCEDURAL", "LANGUAGE"))
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_languages);
|
||||||
|
else if (Matches("COMMENT", "ON", "RULE", MatchAny))
|
||||||
|
COMPLETE_WITH("ON");
|
||||||
|
else if (Matches("COMMENT", "ON", "RULE", MatchAny, "ON"))
|
||||||
|
{
|
||||||
|
completion_info_charp = prev2_wd;
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_rule);
|
||||||
|
}
|
||||||
|
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH"))
|
||||||
|
COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
|
||||||
|
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "CONFIGURATION"))
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_ts_configurations);
|
||||||
|
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "DICTIONARY"))
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_ts_dictionaries);
|
||||||
|
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "PARSER"))
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_ts_parsers);
|
||||||
|
else if (Matches("COMMENT", "ON", "TEXT", "SEARCH", "TEMPLATE"))
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_ts_templates);
|
||||||
|
else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR"))
|
||||||
|
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
|
||||||
|
else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR", MatchAny))
|
||||||
|
COMPLETE_WITH("LANGUAGE");
|
||||||
|
else if (Matches("COMMENT", "ON", "TRANSFORM", "FOR", MatchAny, "LANGUAGE"))
|
||||||
|
{
|
||||||
|
completion_info_charp = prev2_wd;
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_languages);
|
||||||
|
}
|
||||||
|
else if (Matches("COMMENT", "ON", "TRIGGER", MatchAny))
|
||||||
|
COMPLETE_WITH("ON");
|
||||||
|
else if (Matches("COMMENT", "ON", "TRIGGER", MatchAny, "ON"))
|
||||||
|
{
|
||||||
|
completion_info_charp = prev2_wd;
|
||||||
|
COMPLETE_WITH_QUERY(Query_for_list_of_tables_for_trigger);
|
||||||
|
}
|
||||||
else if (Matches("COMMENT", "ON", MatchAny, MatchAnyExcept("IS")) ||
|
else if (Matches("COMMENT", "ON", MatchAny, MatchAnyExcept("IS")) ||
|
||||||
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAnyExcept("IS")) ||
|
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAnyExcept("IS")) ||
|
||||||
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")))
|
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")) ||
|
||||||
|
Matches("COMMENT", "ON", MatchAny, MatchAny, MatchAny, MatchAny, MatchAnyExcept("IS")))
|
||||||
COMPLETE_WITH("IS");
|
COMPLETE_WITH("IS");
|
||||||
|
|
||||||
/* COPY */
|
/* COPY */
|
||||||
|
Reference in New Issue
Block a user