@@ -953,6 +953,13 @@ psql_completion(const char *text, int start, int end)
953953
954954/* ALTER */
955955
956+ /* ALTER TABLE */
957+ else if (pg_strcasecmp (prev2_wd , "ALTER" ) == 0 &&
958+ pg_strcasecmp (prev_wd , "TABLE" ) == 0 )
959+ {
960+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables ,
961+ "UNION SELECT 'ALL IN TABLESPACE'" );
962+ }
956963 /*
957964 * complete with what you can alter (TABLE, GROUP, USER, ...) unless we're
958965 * in ALTER TABLE sth ALTER
@@ -970,6 +977,25 @@ psql_completion(const char *text, int start, int end)
970977
971978 COMPLETE_WITH_LIST (list_ALTER );
972979 }
980+ /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx */
981+ else if (pg_strcasecmp (prev4_wd , "ALL" ) == 0 &&
982+ pg_strcasecmp (prev3_wd , "IN" ) == 0 &&
983+ pg_strcasecmp (prev2_wd , "TABLESPACE" ) == 0 )
984+ {
985+ static const char * const list_ALTERALLINTSPC [] =
986+ {"SET TABLESPACE" , "OWNED BY" , NULL };
987+
988+ COMPLETE_WITH_LIST (list_ALTERALLINTSPC );
989+ }
990+ /* ALTER TABLE,INDEX,MATERIALIZED VIEW xxx ALL IN TABLESPACE xxx OWNED BY */
991+ else if (pg_strcasecmp (prev6_wd , "ALL" ) == 0 &&
992+ pg_strcasecmp (prev5_wd , "IN" ) == 0 &&
993+ pg_strcasecmp (prev4_wd , "TABLESPACE" ) == 0 &&
994+ pg_strcasecmp (prev2_wd , "OWNED" ) == 0 &&
995+ pg_strcasecmp (prev4_wd , "BY" ) == 0 )
996+ {
997+ COMPLETE_WITH_QUERY (Query_for_list_of_roles );
998+ }
973999 /* ALTER AGGREGATE,FUNCTION <name> */
9741000 else if (pg_strcasecmp (prev3_wd , "ALTER" ) == 0 &&
9751001 (pg_strcasecmp (prev2_wd , "AGGREGATE" ) == 0 ||
@@ -1106,6 +1132,13 @@ psql_completion(const char *text, int start, int end)
11061132 COMPLETE_WITH_LIST (list_ALTER_FOREIGN_TABLE );
11071133 }
11081134
1135+ /* ALTER INDEX */
1136+ else if (pg_strcasecmp (prev2_wd , "ALTER" ) == 0 &&
1137+ pg_strcasecmp (prev_wd , "INDEX" ) == 0 )
1138+ {
1139+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_indexes ,
1140+ "UNION SELECT 'ALL IN TABLESPACE'" );
1141+ }
11091142 /* ALTER INDEX <name> */
11101143 else if (pg_strcasecmp (prev3_wd , "ALTER" ) == 0 &&
11111144 pg_strcasecmp (prev2_wd , "INDEX" ) == 0 )
@@ -1169,7 +1202,8 @@ psql_completion(const char *text, int start, int end)
11691202 pg_strcasecmp (prev2_wd , "MATERIALIZED" ) == 0 &&
11701203 pg_strcasecmp (prev_wd , "VIEW" ) == 0 )
11711204 {
1172- COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_matviews , NULL );
1205+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_matviews ,
1206+ "UNION SELECT 'ALL IN TABLESPACE'" );
11731207 }
11741208
11751209 /* ALTER USER,ROLE <name> */
@@ -1749,12 +1783,12 @@ psql_completion(const char *text, int start, int end)
17491783 COMPLETE_WITH_CONST ("IDENTITY" );
17501784 }
17511785
1752- /* ALTER TABLESPACE <foo> with RENAME TO, OWNER TO, SET, RESET, MOVE */
1786+ /* ALTER TABLESPACE <foo> with RENAME TO, OWNER TO, SET, RESET */
17531787 else if (pg_strcasecmp (prev3_wd , "ALTER" ) == 0 &&
17541788 pg_strcasecmp (prev2_wd , "TABLESPACE" ) == 0 )
17551789 {
17561790 static const char * const list_ALTERTSPC [] =
1757- {"RENAME TO" , "OWNER TO" , "SET" , "RESET" , "MOVE" , NULL };
1791+ {"RENAME TO" , "OWNER TO" , "SET" , "RESET" , NULL };
17581792
17591793 COMPLETE_WITH_LIST (list_ALTERTSPC );
17601794 }
@@ -1776,27 +1810,6 @@ psql_completion(const char *text, int start, int end)
17761810
17771811 COMPLETE_WITH_LIST (list_TABLESPACEOPTIONS );
17781812 }
1779- /* ALTER TABLESPACE <foo> MOVE ALL|TABLES|INDEXES|MATERIALIZED VIEWS */
1780- else if (pg_strcasecmp (prev4_wd , "ALTER" ) == 0 &&
1781- pg_strcasecmp (prev3_wd , "TABLESPACE" ) == 0 &&
1782- pg_strcasecmp (prev_wd , "MOVE" ) == 0 )
1783- {
1784- static const char * const list_TABLESPACEMOVETARGETS [] =
1785- {"ALL" , "TABLES" , "INDEXES" , "MATERIALIZED VIEWS" , NULL };
1786-
1787- COMPLETE_WITH_LIST (list_TABLESPACEMOVETARGETS );
1788- }
1789- else if ((pg_strcasecmp (prev4_wd , "TABLESPACE" ) == 0 &&
1790- pg_strcasecmp (prev2_wd , "MOVE" ) == 0 ) ||
1791- (pg_strcasecmp (prev5_wd , "TABLESPACE" ) == 0 &&
1792- pg_strcasecmp (prev3_wd , "MOVE" ) == 0 &&
1793- pg_strcasecmp (prev2_wd , "MATERIALIZED" ) == 0 ))
1794- {
1795- static const char * const list_TABLESPACEMOVEOPTIONS [] =
1796- {"OWNED BY" , "TO" , NULL };
1797-
1798- COMPLETE_WITH_LIST (list_TABLESPACEMOVEOPTIONS );
1799- }
18001813
18011814 /* ALTER TEXT SEARCH */
18021815 else if (pg_strcasecmp (prev3_wd , "ALTER" ) == 0 &&
@@ -2798,9 +2811,8 @@ psql_completion(const char *text, int start, int end)
27982811 * but we may as well tab-complete both: perhaps some users prefer one
27992812 * variant or the other.
28002813 */
2801- else if ((pg_strcasecmp (prev3_wd , "FETCH" ) == 0 ||
2802- pg_strcasecmp (prev3_wd , "MOVE" ) == 0 ) &&
2803- pg_strcasecmp (prev_wd , "TO" ) != 0 )
2814+ else if (pg_strcasecmp (prev3_wd , "FETCH" ) == 0 ||
2815+ pg_strcasecmp (prev3_wd , "MOVE" ) == 0 )
28042816 {
28052817 static const char * const list_FROMIN [] =
28062818 {"FROM" , "IN" , NULL };
0 commit comments