Include RELKIND_TOASTVALUE in get_relkind_objtype
Hsu, John <hsuchen@amazon.com>
From: "Hsu, John" <hsuchen@amazon.com>
To: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2019-10-01T00:10:50Z
Lists: pgsql-hackers
Attachments
- RELKIND_TOAST_01.patch (application/octet-stream) patch
Hello, get_relkind_objtype(...) was introduced as part of 8b9e9644dc, and it doesn't include RELKIND_TOASTVALUE. As a result when a user who has usage rights on schema pg_toast and attempts to reindex a table it is not the owner of it fails with the wrong error message. testuser is a non-superuser role who has been granted all on pg_toast postgres=> \c You are now connected to database "postgres" as user "testuser". postgres=> REINDEX TABLE pg_toast.pg_toast_16388; ERROR: unexpected relkind: 116 It seems get_relkind_objtype(...) is only used as part of aclcheck_error(...) I've attached a patch to include RELKIND_TOASTVALUE in get_relkind_objtype. Now it fails with the proper error message. postgres=> \c You are now connected to database "postgres" as user "testuser". postgres=> REINDEX TABLE pg_toast.pg_toast_16388; ERROR: must be owner of table pg_toast_16388 Cheers, John H
Commits
-
Fix "unexpected relkind" error when denying permissions on toast tables.
- a30531c5c8a3 13.0 landed
- 791864193636 12.1 landed
- 2bfe015b5626 11.6 landed