permission issue

Vadim Mikheev <vadim@sable.krasnoyarsk.su>

From: "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
To: hackers@postgresql.org
Date: 1998-02-27T07:30:08Z
Lists: pgsql-hackers
Tables INS (x int) and SEL (y int) are owned by dbadm, for another
user SELECT granted on SEL, INSERT - on INS.

Should another user be able to do

insert into ins select y from sel where x = y;

or not ? 
Currently, PG allows this. Backend tries to check 
(in execMain.c:ExecCheckPerms()) is READ access to
table being changed granted to user or not, but this check
seems to be quite stupid:

            qvars = pull_varnos(parseTree->qual);
            tvars = pull_varnos((Node *) parseTree->targetList);
            if (intMember(resultRelation, qvars) ||
                intMember(resultRelation, tvars))

: pull_varnos is very simple and just skips expressions in
qual & target list.

We have to either get rid of this check or change it.

What do you think ?
How "big boys" handle this ?

Vadim