> On Aug 15, 2018, at 9:15 PM, Michael Paquier <[email protected]> wrote: > > On Wed, Aug 15, 2018 at 09:06:34PM -0400, Jonathan S. Katz wrote: >> I played around with this feature a bit and did see this was the case. >> Also while playing around I noticed the error message was as such: >> >> test=> REFRESH MATERIALIZED VIEW blah; >> ERROR: must be owner of relation blah >> >> But it’s not a relation, it’s a materialized view. I attached a patch >> that I think should fix this. Kudos to Dave Cramer who was >> sitting next to me helping me to locate files and confirm assumptions. > > A relation may be a materialized view, no? The ACL check happens in > RangeVarCallbackOwnsTable by the way (look at ExecRefreshMatView in > matview.c).
Comment on the RangeVarCallbackOwnsTable func (abbr):
/*
* This is intended as a callback for RangeVarGetRelidExtended(). It allows
* the relation to be locked only if (1) it's a plain table, materialized
* view, or TOAST table and (2) the current user is the owner (or the
* superuser). This meets the permission-checking needs of CLUSTER, REINDEX
* TABLE, and REFRESH MATERIALIZED VIEW; we expose it here so that it can be
* used by all.
*/
So it’s sharing the permission checking needs amongst all of those commands.
As a user I could be confused if I saw the above error message, esp. because
the behavior of REFRESH .. is specific to materialized views.
Jonathan
signature.asc
Description: Message signed with OpenPGP
