Tab completion for DROP CONSTRAINT
Started by Jeff Janesover 13 years ago2 messages
Interactively dropping primary key constraints has been annoying me.
I believe this patch fixes that, hopefully for other kinds of
cataloged constraints as well.
I believe this finishes, at least for a while, my tab-completion related gripes.
Cheers,
Jeff
Attachments:
drop_constraint_complete_v1.patchapplication/octet-stream; name=drop_constraint_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..d55d8a0
*** a/src/bin/psql/tab-complete.c
--- b/src/bin/psql/tab-complete.c
*************** static const SchemaQuery Query_for_list_
*** 580,585 ****
--- 580,593 ----
" and pg_catalog.pg_table_is_visible(c2.oid)"
/* the silly-looking length condition is just to eat up the current word */
+ #define Query_for_constraint_of_table \
+ "SELECT pg_catalog.quote_ident(conname) "\
+ " FROM pg_catalog.pg_class c1, pg_catalog.pg_constraint con "\
+ " WHERE c1.oid=conrelid and (%d = pg_catalog.length('%s'))"\
+ " and pg_catalog.quote_ident(c1.relname)='%s'"\
+ " and pg_catalog.pg_table_is_visible(c1.oid)"
+
+ /* the silly-looking length condition is just to eat up the current word */
#define Query_for_list_of_tables_for_trigger \
"SELECT pg_catalog.quote_ident(relname) "\
" FROM pg_catalog.pg_class"\
*************** psql_completion(char *text, int start, i
*** 1337,1342 ****
--- 1345,1358 ----
pg_strcasecmp(prev2_wd, "DROP") == 0 &&
pg_strcasecmp(prev_wd, "COLUMN") == 0)
COMPLETE_WITH_ATTR(prev3_wd, "");
+ /* If we have TABLE <sth> DROP CONSTRAINT, provide list of constraints */
+ else if (pg_strcasecmp(prev4_wd, "TABLE") == 0 &&
+ pg_strcasecmp(prev2_wd, "DROP") == 0 &&
+ pg_strcasecmp(prev_wd, "CONSTRAINT") == 0)
+ {
+ completion_info_charp = prev3_wd;
+ COMPLETE_WITH_QUERY(Query_for_constraint_of_table);
+ }
/* ALTER TABLE ALTER [COLUMN] <foo> */
else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
pg_strcasecmp(prev2_wd, "COLUMN") == 0) ||
Re: Tab completion for DROP CONSTRAINT
On Sun, Aug 19, 2012 at 4:43 PM, Jeff Janes <jeff.janes@gmail.com> wrote:
Interactively dropping primary key constraints has been annoying me.
I believe this patch fixes that, hopefully for other kinds of
cataloged constraints as well.
Committed, thanks.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company