Suya Huang wrote:
> I’ve encountered a weird problem in PostgreSQL :
>
> postgres=> create user test password ‘test’;
>
> postgres=> grant select on pg_catalog.pg_database_size to test;
This statement produces an error:
ERROR: relation "pg_catalog.pg_database_size" does not exist
> postgres=> grant execute on function pg_catalog.pg_database_size(name) to test;
>
> --login as user test
> postgres=> select current_user;
> current_user
> --------------
> test
> (1 row)
>
>
> --query individual database size is fine
> postgres=> select pg_database_size('postgres');
> pg_database_size
> ------------------
> 25611884
> (1 row)
>
> --fails if try to get all db size in one sql
> postgres=> SELECT current_date,pg_database_size(pg_database.datname) from pg_database;
> ERROR: permission denied for database control
Works for me.
It seems like you have a database called "control" for which user "test"
has no connect privilege.
Yours,
Laurenz Albe