@@ -1661,14 +1661,29 @@ psql_completion(char *text, int start, int end)
16611661/* CLUSTER */
16621662
16631663/*
1664- * If the previous word is CLUSTER and notwithout produce list of tables
1664+ * If the previous word is CLUSTER and notWITHOUT produce list of tables
16651665 */
16661666else if (pg_strcasecmp (prev_wd ,"CLUSTER" )== 0 &&
16671667pg_strcasecmp (prev2_wd ,"WITHOUT" )!= 0 )
1668+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables ,"UNION SELECT 'VERBOSE'" );
1669+
1670+ /*
1671+ * If the previous words are CLUSTER VERBOSE produce list of tables
1672+ */
1673+ else if (pg_strcasecmp (prev_wd ,"VERBOSE" )== 0 &&
1674+ pg_strcasecmp (prev2_wd ,"CLUSTER" )== 0 )
16681675COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_tables ,NULL );
1676+
16691677/* If we have CLUSTER <sth>, then add "USING" */
16701678else if (pg_strcasecmp (prev2_wd ,"CLUSTER" )== 0 &&
1671- pg_strcasecmp (prev_wd ,"ON" )!= 0 )
1679+ pg_strcasecmp (prev_wd ,"ON" )!= 0 &&
1680+ pg_strcasecmp (prev_wd ,"VERBOSE" )!= 0 )
1681+ {
1682+ COMPLETE_WITH_CONST ("USING" );
1683+ }
1684+ /* If we have CLUSTER VERBOSE <sth>, then add "USING" */
1685+ else if (pg_strcasecmp (prev3_wd ,"CLUSTER" )== 0 &&
1686+ pg_strcasecmp (prev2_wd ,"VERBOSE" )== 0 )
16721687{
16731688COMPLETE_WITH_CONST ("USING" );
16741689}
@@ -1683,6 +1698,17 @@ psql_completion(char *text, int start, int end)
16831698COMPLETE_WITH_QUERY (Query_for_index_of_table );
16841699}
16851700
1701+ /*
1702+ * If we have CLUSTER VERBOSE <sth> USING, then add the index as well.
1703+ */
1704+ else if (pg_strcasecmp (prev4_wd ,"CLUSTER" )== 0 &&
1705+ pg_strcasecmp (prev3_wd ,"VERBOSE" )== 0 &&
1706+ pg_strcasecmp (prev_wd ,"USING" )== 0 )
1707+ {
1708+ completion_info_charp = prev2_wd ;
1709+ COMPLETE_WITH_QUERY (Query_for_index_of_table );
1710+ }
1711+
16861712/* COMMENT */
16871713else if (pg_strcasecmp (prev_wd ,"COMMENT" )== 0 )
16881714COMPLETE_WITH_CONST ("ON" );