Improved tab completion for CLUSTER VERBOSE.
authorRobert Haas
Mon, 20 Aug 2012 20:45:44 +0000 (16:45 -0400)
committerRobert Haas
Mon, 20 Aug 2012 20:45:44 +0000 (16:45 -0400)
Jeff Janes

src/bin/psql/tab-complete.c

index ef62a422eebc20bcf9427db8b6be9ab6b7bb7372..8a748771983a0670031dcdc7d86fd3842141daaa 100644 (file)
@@ -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 , 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 , 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  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");