"CLUSTER VERBOSE" tab completion
tab completion will add "USING" after CLUSTER VERBOSE, as if VERBOSE
were the name of a table.
Instead of just making it not do the wrong thing, I tried to make it
actually do the right thing.
It doesn't fill in the VERBOSE for you, you have to type that in full,
but then it completes table names afterward (and USING and index names
after that)
Cheers,
Jeff
Attachments:
cluster_verbose_complete_v1.patchapplication/octet-stream; name=cluster_verbose_complete_v1.patchDownload
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
new file mode 100644
index a1bb230..4f73d70
*** a/src/bin/psql/tab-complete.c
--- b/src/bin/psql/tab-complete.c
*************** psql_completion(char *text, int start, i
*** 1645,1658 ****
/* CLUSTER */
/*
! * 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, NULL);
/* If we have CLUSTER <sth>, then add "USING" */
else if (pg_strcasecmp(prev2_wd, "CLUSTER") == 0 &&
! pg_strcasecmp(prev_wd, "ON") != 0)
{
COMPLETE_WITH_CONST("USING");
}
--- 1645,1673 ----
/* CLUSTER */
/*
! * 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, NULL);
+
+ /*
+ * 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, "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");
}
*************** psql_completion(char *text, int start, i
*** 1667,1672 ****
--- 1682,1698 ----
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");
On Fri, Aug 17, 2012 at 7:18 PM, Jeff Janes <jeff.janes@gmail.com> wrote:
tab completion will add "USING" after CLUSTER VERBOSE, as if VERBOSE
were the name of a table.Instead of just making it not do the wrong thing, I tried to make it
actually do the right thing.It doesn't fill in the VERBOSE for you, you have to type that in full,
This short coming has now been rectified.
Cheers,
Jeff
Attachments:
cluster_verbose_complete_v2.patchapplication/octet-stream; name=cluster_verbose_complete_v2.patchDownload
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
new file mode 100644
index a1bb230..8216e86
*** a/src/bin/psql/tab-complete.c
--- b/src/bin/psql/tab-complete.c
*************** psql_completion(char *text, int start, i
*** 1645,1658 ****
/* CLUSTER */
/*
! * 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, NULL);
/* If we have CLUSTER <sth>, then add "USING" */
else if (pg_strcasecmp(prev2_wd, "CLUSTER") == 0 &&
! pg_strcasecmp(prev_wd, "ON") != 0)
{
COMPLETE_WITH_CONST("USING");
}
--- 1645,1673 ----
/* CLUSTER */
/*
! * 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, "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");
}
*************** psql_completion(char *text, int start, i
*** 1664,1669 ****
--- 1679,1695 ----
pg_strcasecmp(prev_wd, "USING") == 0)
{
completion_info_charp = prev2_wd;
+ 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);
}
On Sun, Aug 19, 2012 at 4:55 PM, Jeff Janes <jeff.janes@gmail.com> wrote:
On Fri, Aug 17, 2012 at 7:18 PM, Jeff Janes <jeff.janes@gmail.com> wrote:
tab completion will add "USING" after CLUSTER VERBOSE, as if VERBOSE
were the name of a table.Instead of just making it not do the wrong thing, I tried to make it
actually do the right thing.It doesn't fill in the VERBOSE for you, you have to type that in full,
This short coming has now been rectified.
Committed this one too. Thanks for the patch.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company