'update' as action of 'insert' rule: permission denied - Mailing list pgsql-bugs

From Tim Burgess
Subject 'update' as action of 'insert' rule: permission denied
Date
Msg-id A102805E-3D28-11D7-A5D5-000393BE2C60@queens.unimelb.edu.au
Whole thread Raw
Responses Re: 'update' as action of 'insert' rule: permission denied  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
Gday All,

I'm surprised I can't find any descriptions of this in the archive
already, since I had imagined it would be a common action, but
apparently not!

Illustration:

As superuser:

create table1 ( test1 integer );
create table2 ( test2 integer );
create user pleb;
grant insert on table1 to pleb;
create rule test_rule as on insert to table1 do update table2 set test2
= 2 where test2 = 0;

As user pleb:

insert into table1 values (1);
ERROR:  table1: Permission denied.

However, just to check, if we remove the rule (using DROP RULE) the
INSERT query works fine.
I also wrote a query using 'insert' as the action instead of 'update'
and that worked fine too.
I also tried granting the user pleb update and select permission on
table test2, and that failed in the same way as above.

My impression from the doco is that the permission rules should be
applied _before_ any rule interpretation is applied, and then again as
the rule owner for the queries (extra queries only?  this is
unspecified in the doco) that the rule creates.  Since the rule owner
in this case is the superuser (correct?), the query should succeed
whether or not the rule is present.

Note that the query succeeds when run as the superuser...

Cheerio!,

Tim Burgess
Queens' College
University of Melbourne

pgsql-bugs by date:

Previous
From: pgsql-bugs@postgresql.org
Date:
Subject: Bug #896: Column Constraint Not Working in ALTER TABLE ADD COLUMN?
Next
From: Florian Wunderlich
Date:
Subject: Re: Bug #866 related problem (ATTN Tom Lane)