Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd3fa876

Browse files
committed
Add more tab completion support for ALTER TABLE ADD in psql
This includes the detection of new patterns for various constrainttypes, with the addition of USING INDEX for unique indexes of a tableon primary keys and unique constraints.Author: Dagfinn Ilmari MannsåkerDiscussion:https://postgr.es/m/87bl6ehhpl.fsf@wibble.ilmari.org
1 parent10d5822 commitd3fa876

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

‎src/bin/psql/tab-complete.c‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,10 @@ static const SchemaQuery Query_for_list_of_collations = {
776776
" and pg_catalog.quote_ident(c1.relname)='%s'"\
777777
" and pg_catalog.pg_table_is_visible(c2.oid)"
778778

779+
#defineQuery_for_unique_index_of_table \
780+
Query_for_index_of_table \
781+
" and i.indisunique"
782+
779783
/* the silly-looking length condition is just to eat up the current word */
780784
#defineQuery_for_constraint_of_table \
781785
"SELECT pg_catalog.quote_ident(conname) "\
@@ -2019,6 +2023,45 @@ psql_completion(const char *text, int start, int end)
20192023
"OWNER TO","SET","VALIDATE CONSTRAINT",
20202024
"REPLICA IDENTITY","ATTACH PARTITION",
20212025
"DETACH PARTITION","FORCE ROW LEVEL SECURITY");
2026+
/* ALTER TABLE xxx ADD */
2027+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD"))
2028+
COMPLETE_WITH("COLUMN","CONSTRAINT","CHECK","UNIQUE","PRIMARY KEY",
2029+
"EXCLUDE","FOREIGN KEY");
2030+
/* ALTER TABLE xxx ADD CONSTRAINT yyy */
2031+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD","CONSTRAINT",MatchAny))
2032+
COMPLETE_WITH("CHECK","UNIQUE","PRIMARY KEY","EXCLUDE","FOREIGN KEY");
2033+
/* ALTER TABLE xxx ADD [CONSTRAINT yyy] (PRIMARY KEY|UNIQUE) */
2034+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD","PRIMARY","KEY")||
2035+
Matches("ALTER","TABLE",MatchAny,"ADD","UNIQUE")||
2036+
Matches("ALTER","TABLE",MatchAny,"ADD","CONSTRAINT",MatchAny,"PRIMARY","KEY")||
2037+
Matches("ALTER","TABLE",MatchAny,"ADD","CONSTRAINT",MatchAny,"UNIQUE"))
2038+
COMPLETE_WITH("(","USING INDEX");
2039+
/* ALTER TABLE xxx ADD PRIMARY KEY USING INDEX */
2040+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD","PRIMARY","KEY","USING","INDEX"))
2041+
{
2042+
completion_info_charp=prev6_wd;
2043+
COMPLETE_WITH_QUERY(Query_for_unique_index_of_table);
2044+
}
2045+
/* ALTER TABLE xxx ADD UNIQUE USING INDEX */
2046+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD","UNIQUE","USING","INDEX"))
2047+
{
2048+
completion_info_charp=prev5_wd;
2049+
COMPLETE_WITH_QUERY(Query_for_unique_index_of_table);
2050+
}
2051+
/* ALTER TABLE xxx ADD CONSTRAINT yyy PRIMARY KEY USING INDEX */
2052+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD","CONSTRAINT",MatchAny,
2053+
"PRIMARY","KEY","USING","INDEX"))
2054+
{
2055+
completion_info_charp=prev8_wd;
2056+
COMPLETE_WITH_QUERY(Query_for_unique_index_of_table);
2057+
}
2058+
/* ALTER TABLE xxx ADD CONSTRAINT yyy UNIQUE USING INDEX */
2059+
elseif (Matches("ALTER","TABLE",MatchAny,"ADD","CONSTRAINT",MatchAny,
2060+
"UNIQUE","USING","INDEX"))
2061+
{
2062+
completion_info_charp=prev7_wd;
2063+
COMPLETE_WITH_QUERY(Query_for_unique_index_of_table);
2064+
}
20222065
/* ALTER TABLE xxx ENABLE */
20232066
elseif (Matches("ALTER","TABLE",MatchAny,"ENABLE"))
20242067
COMPLETE_WITH("ALWAYS","REPLICA","ROW LEVEL SECURITY","RULE",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp