Reference integrity module seems to have a serious bug (I use 7.0).
Although the super user gave a SELECT permission to the simple user
on the table "a" and ALL permission on the table "c" (which references
to the table "a"), the simple user will get an
ERROR: a: Permission denied.
message. My definitions:
test=# create table a(b serial);
test=# grant select on a to simpleuser;
test=# create table c(d int4 not null references a(b));
test=# grant all on c to simpleuser;