Am 26.04.23 um 20:05 schrieb Tom Lane:
richard coleman <rcoleman.ascentgl@xxxxxxxxx> writes:Thanks for that. It still seems rather weird that there isn't a more straightforward way to get access to that information.You could just read the system catalog documentation: https://www.postgresql.org/docs/current/catalogs.html psql's queries are mostly useful as a shortcut to finding out where to look.Also the SQL generated by psql -E doesn't seem to work on earlier versions of PostgreSQL:Yeah, you'd need to try it against a server of the vintage you care about. (Also read the documentation of the correct version.)Are you saying that the only place this information is stored is in an array in the datacl column of the pg_catalog.pg_database table?Precisely.If that's the case then I am going to be forced to either write code to parse out that array, or write a looping union of multiple "has_database_privilege()" calls.You were already pointed at aclexplode(), which might help. select datname, a.* from pg_database, aclexplode(datacl) a; regards, tom lane
\df+ aclexplodein psql will show you more information about the function, which might help in make good use of it.
-- Holger Jakobs, Bergisch Gladbach, Tel. +49-178-9759012
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature