]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Don't include "schema." in the set of possible tab completions once
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 28 Oct 2003 23:35:52 +0000 (23:35 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 28 Oct 2003 23:35:52 +0000 (23:35 +0000)
"schema." has been typed.  This allows readline to complete subsequent
characters immediately if all relations in the target schema start with
the same prefix.  This actually worked before, but I unintentionally
broke it a few days ago.
Also, make completion schema-aware for GRANT, REVOKE, VACUUM.

src/bin/psql/tab-complete.c

index 12af60ffa6d26bd11468ce16c4bd7f4123a9d115..bcd01b7516557e6f9c010703dcb5acd568b6860f 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.89 2003/10/17 11:52:06 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.90 2003/10/28 23:35:52 tgl Exp $
  */
 
 /*----------------------------------------------------------------------
@@ -142,7 +142,7 @@ initialize_readline(void)
 "        UNION" \
 " SELECT pg_catalog.quote_ident(nspname) || '.'" \
 "   FROM pg_catalog.pg_namespace" \
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s'" \
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s'" \
 "        UNION" \
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(proname)" \
 "   FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n" \
@@ -180,7 +180,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.'"\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.format_type(t.oid, NULL)"\
 "   FROM pg_catalog.pg_type t, pg_catalog.pg_namespace n "\
@@ -204,7 +204,7 @@ initialize_readline(void)
 "        UNION" \
 " SELECT pg_catalog.quote_ident(nspname) || '.'"\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(typname)"\
 "   FROM pg_catalog.pg_type t, pg_catalog.pg_namespace n "\
@@ -230,7 +230,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(proname) "\
 "   FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n "\
@@ -253,7 +253,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(relname) "\
 "   FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@ -288,7 +288,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(relname) "\
 "   FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@ -321,7 +321,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(relname) "\
 "   FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@ -345,7 +345,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(relname) "\
 "   FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@ -369,7 +369,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(relname) "\
 "   FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@ -393,7 +393,7 @@ initialize_readline(void)
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' "\
 "   FROM pg_catalog.pg_namespace "\
-"  WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,%d)='%s' "\
+"  WHERE substring(pg_catalog.quote_ident(nspname),1,%d)='%s' "\
 "        UNION "\
 " SELECT pg_catalog.quote_ident(nspname) || '.' || pg_catalog.quote_ident(relname) "\
 "   FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@ -991,20 +991,11 @@ psql_completion(char *text, int start, int end)
        else if ((strcasecmp(prev3_wd, "GRANT") == 0 ||
                          strcasecmp(prev3_wd, "REVOKE") == 0) &&
                         strcasecmp(prev_wd, "ON") == 0)
-               COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(relname) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "
-                                                       " WHERE relkind in ('r','S','v')  "
-                                                       "   AND substring(pg_catalog.quote_ident(relname),1,%d)='%s' "
-                                                 "   AND pg_catalog.pg_table_is_visible(c.oid) "
-                                                       "   AND relnamespace = n.oid "
-                                       "   AND n.nspname NOT IN ('pg_catalog', 'pg_toast') "
-                                                       " UNION "
-                                                       "SELECT 'DATABASE' "
-                                                       " UNION "
-                                                       "SELECT 'FUNCTION' "
-                                                       " UNION "
-                                                       "SELECT 'LANGUAGE' "
-                                                       " UNION "
-                                                       "SELECT 'SCHEMA' ");
+               COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsv
+                                                                  " UNION SELECT 'DATABASE'"
+                                                                  " UNION SELECT 'FUNCTION'"
+                                                                  " UNION SELECT 'LANGUAGE'"
+                                                                  " UNION SELECT 'SCHEMA'");
 
        /* Complete "GRANT/REVOKE * ON * " with "TO" */
        else if ((strcasecmp(prev4_wd, "GRANT") == 0 ||
@@ -1251,7 +1242,10 @@ psql_completion(char *text, int start, int end)
 
 /* VACUUM */
        else if (strcasecmp(prev_wd, "VACUUM") == 0)
-               COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(relname) FROM pg_catalog.pg_class WHERE relkind='r' and substring(pg_catalog.quote_ident(relname),1,%d)='%s' and pg_catalog.pg_table_is_visible(oid) UNION SELECT 'FULL' UNION SELECT 'ANALYZE' UNION SELECT 'VERBOSE'");
+               COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables
+                                                                  " UNION SELECT 'FULL'"
+                                                                  " UNION SELECT 'ANALYZE'"
+                                                                  " UNION SELECT 'VERBOSE'");
        else if (strcasecmp(prev2_wd, "VACUUM") == 0 &&
                         (strcasecmp(prev_wd, "FULL") == 0 ||
                          strcasecmp(prev_wd, "ANALYZE") == 0 ||