"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.
" FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@ -991,20 +991,11 @@ psql_completion(char *text, int start, int end)
elseif((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" */
elseif((strcasecmp(prev4_wd,"GRANT")==0||
@ -1251,7 +1242,10 @@ psql_completion(char *text, int start, int end)
/* VACUUM */
elseif(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'");