diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index ef62a422eebc20bcf9427db8b6be9ab6b7bb7372..8a748771983a0670031dcdc7d86fd3842141daaa 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -1661,14 +1661,29 @@ psql_completion(char *text, int start, int end)
 /* CLUSTER */
 
 	/*
-	 * If the previous word is CLUSTER and not without produce list of tables
+	 * If the previous word is CLUSTER and not WITHOUT produce list of tables
 	 */
 	else if (pg_strcasecmp(prev_wd, "CLUSTER") == 0 &&
 			 pg_strcasecmp(prev2_wd, "WITHOUT") != 0)
+		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, "UNION SELECT 'VERBOSE'");
+
+	/*
+	 * If the previous words are CLUSTER VERBOSE produce list of tables
+	 */
+	else if (pg_strcasecmp(prev_wd, "VERBOSE") == 0 &&
+			 pg_strcasecmp(prev2_wd, "CLUSTER") == 0)
 		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+
 	/* If we have CLUSTER <sth>, then add "USING" */
 	else if (pg_strcasecmp(prev2_wd, "CLUSTER") == 0 &&
-			 pg_strcasecmp(prev_wd, "ON") != 0)
+			 pg_strcasecmp(prev_wd, "ON") != 0 &&
+			 pg_strcasecmp(prev_wd, "VERBOSE") != 0)
+	{
+		COMPLETE_WITH_CONST("USING");
+	}
+	/* If we have CLUSTER VERBOSE <sth>, then add "USING" */
+	else if (pg_strcasecmp(prev3_wd, "CLUSTER") == 0 &&
+			 pg_strcasecmp(prev2_wd, "VERBOSE") == 0)
 	{
 		COMPLETE_WITH_CONST("USING");
 	}
@@ -1683,6 +1698,17 @@ psql_completion(char *text, int start, int end)
 		COMPLETE_WITH_QUERY(Query_for_index_of_table);
 	}
 
+	/*
+	 * If we have CLUSTER VERBOSE <sth> USING, then add the index as well.
+	 */
+	else if (pg_strcasecmp(prev4_wd, "CLUSTER") == 0 &&
+             pg_strcasecmp(prev3_wd, "VERBOSE") == 0 &&
+			 pg_strcasecmp(prev_wd, "USING") == 0)
+	{
+		completion_info_charp = prev2_wd;
+		COMPLETE_WITH_QUERY(Query_for_index_of_table);
+	}
+
 /* COMMENT */
 	else if (pg_strcasecmp(prev_wd, "COMMENT") == 0)
 		COMPLETE_WITH_CONST("ON");