]> granicus.if.org Git - postgresql/commitdiff
Fix recent commit for tab-completion of database template.
authorKevin Grittner <kgrittn@postgresql.org>
Mon, 12 Sep 2016 14:22:57 +0000 (09:22 -0500)
committerKevin Grittner <kgrittn@postgresql.org>
Mon, 12 Sep 2016 14:22:57 +0000 (09:22 -0500)
The details of commit 52803098ab26051c0c9802f3c19edffc90de8843 were
based on a misunderstanding of the role inheritance allowing use
of a database for a template.  While the CREATEDB privilege is not
inherited, the database ownership is privileges are.

Pointed out by Vitaly Burovoy and Tom Lane.
Fix provided by Tom Lane, reviewed by Vitaly Burovoy.

src/bin/psql/tab-complete.c

index 3e2f0846e79922e2f6b10bd729e87045167bb2ec..50a45eb92896d924b081be76b7eb0d089c697a3d 100644 (file)
@@ -601,9 +601,8 @@ static const SchemaQuery Query_for_list_of_matviews = {
 #define Query_for_list_of_template_databases \
 "SELECT pg_catalog.quote_ident(d.datname) "\
 "  FROM pg_catalog.pg_database d "\
-"  JOIN pg_catalog.pg_roles r ON r.rolname = CURRENT_USER "\
 " WHERE substring(pg_catalog.quote_ident(d.datname),1,%d)='%s' "\
-"   AND (d.datistemplate OR r.rolsuper OR d.datdba = r.oid)"
+"   AND (d.datistemplate OR pg_catalog.pg_has_role(d.datdba, 'USAGE'))"
 
 #define Query_for_list_of_databases \
 "SELECT pg_catalog.quote_ident(datname) FROM pg_catalog.pg_database "\