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

Commit9d1fb11

Browse files
committed
Basic tab completion for partitioning.
Amit LangoteDiscussion:http://postgr.es/m/CA+TgmobYOj=A8GesiEs_V2Wq46-_w0+7MOwPiNWC+iuzJ-uWjA@mail.gmail.com
1 parenta315b96 commit9d1fb11

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

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

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,21 @@ static const SchemaQuery Query_for_list_of_tables = {
463463
NULL
464464
};
465465

466+
staticconstSchemaQueryQuery_for_list_of_partitioned_tables= {
467+
/* catname */
468+
"pg_catalog.pg_class c",
469+
/* selcondition */
470+
"c.relkind IN ('P')",
471+
/* viscondition */
472+
"pg_catalog.pg_table_is_visible(c.oid)",
473+
/* namespace */
474+
"c.relnamespace",
475+
/* result */
476+
"pg_catalog.quote_ident(c.relname)",
477+
/* qualresult */
478+
NULL
479+
};
480+
466481
staticconstSchemaQueryQuery_for_list_of_constraints_with_schema= {
467482
/* catname */
468483
"pg_catalog.pg_constraint c",
@@ -913,6 +928,16 @@ static const SchemaQuery Query_for_list_of_matviews = {
913928
" SELECT 'DEFAULT' ) ss "\
914929
" WHERE pg_catalog.substring(name,1,%%d)='%%s'"
915930

931+
/* the silly-looking length condition is just to eat up the current word */
932+
#defineQuery_for_partition_of_table \
933+
"SELECT pg_catalog.quote_ident(c2.relname) "\
934+
" FROM pg_catalog.pg_class c1, pg_catalog.pg_class c2, pg_catalog.pg_inherits i"\
935+
" WHERE c1.oid=i.inhparent and i.inhrelid=c2.oid"\
936+
" and (%d = pg_catalog.length('%s'))"\
937+
" and pg_catalog.quote_ident(c1.relname)='%s'"\
938+
" and pg_catalog.pg_table_is_visible(c2.oid)"\
939+
" and c2.relispartition = 'true'"
940+
916941
/*
917942
* This is a list of all "things" in Pgsql, which can show up after CREATE or
918943
* DROP; and there is also a query to get a list of them.
@@ -1742,7 +1767,8 @@ psql_completion(const char *text, int start, int end)
17421767
staticconstchar*constlist_ALTER2[]=
17431768
{"ADD","ALTER","CLUSTER ON","DISABLE","DROP","ENABLE","INHERIT",
17441769
"NO INHERIT","RENAME","RESET","OWNER TO","SET",
1745-
"VALIDATE CONSTRAINT","REPLICA IDENTITY",NULL};
1770+
"VALIDATE CONSTRAINT","REPLICA IDENTITY","ATTACH PARTITION",
1771+
"DETACH PARTITION",NULL};
17461772

17471773
COMPLETE_WITH_LIST(list_ALTER2);
17481774
}
@@ -1923,6 +1949,26 @@ psql_completion(const char *text, int start, int end)
19231949
COMPLETE_WITH_LIST4("FULL","NOTHING","DEFAULT","USING");
19241950
elseif (Matches4("ALTER","TABLE",MatchAny,"REPLICA"))
19251951
COMPLETE_WITH_CONST("IDENTITY");
1952+
/*
1953+
* If we have ALTER TABLE <foo> ATTACH PARTITION, provide a list of
1954+
* tables.
1955+
*/
1956+
elseif (Matches5("ALTER","TABLE",MatchAny,"ATTACH","PARTITION"))
1957+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,"");
1958+
/* Limited completion support for partition bound specification */
1959+
elseif (TailMatches3("ATTACH","PARTITION",MatchAny))
1960+
COMPLETE_WITH_CONST("FOR VALUES");
1961+
elseif (TailMatches2("FOR","VALUES"))
1962+
COMPLETE_WITH_LIST2("FROM (","IN (");
1963+
/*
1964+
* If we have ALTER TABLE <foo> DETACH PARTITION, provide a list of
1965+
* partitions of <foo>.
1966+
*/
1967+
elseif (Matches5("ALTER","TABLE",MatchAny,"DETACH","PARTITION"))
1968+
{
1969+
completion_info_charp=prev3_wd;
1970+
COMPLETE_WITH_QUERY(Query_for_partition_of_table);
1971+
}
19261972

19271973
/* ALTER TABLESPACE <foo> with RENAME TO, OWNER TO, SET, RESET */
19281974
elseif (Matches3("ALTER","TABLESPACE",MatchAny))
@@ -2300,6 +2346,15 @@ psql_completion(const char *text, int start, int end)
23002346
/* Complete "CREATE UNLOGGED" with TABLE or MATVIEW */
23012347
elseif (TailMatches2("CREATE","UNLOGGED"))
23022348
COMPLETE_WITH_LIST2("TABLE","MATERIALIZED VIEW");
2349+
/* Complete PARTITION BY with RANGE ( or LIST ( or ... */
2350+
elseif (TailMatches2("PARTITION","BY"))
2351+
COMPLETE_WITH_LIST2("RANGE (","LIST (");
2352+
/* If we have xxx PARTITION OF, provide a list of partitioned tables */
2353+
elseif (TailMatches2("PARTITION","OF"))
2354+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_partitioned_tables,"");
2355+
/* Limited completion support for partition bound specification */
2356+
elseif (TailMatches3("PARTITION","OF",MatchAny))
2357+
COMPLETE_WITH_CONST("FOR VALUES");
23032358

23042359
/* CREATE TABLESPACE */
23052360
elseif (Matches3("CREATE","TABLESPACE",MatchAny))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp