On 5/11/21 11:37 AM, Bruce Momjian wrote:
On Tue, May 11, 2021 at 11:26:48AM -0400, Joe Conway wrote:
On 5/11/21 11:11 AM, Bruce Momjian wrote:
> > Previously existence of such columns were ignored when caller had table
> > level privileges.
> > I can't reproduce the NULL using column name text:

>    test=> SELECT has_column_privilege('test', 'z', 'SELECT');
>    ERROR:  column "z" of relation "test" does not exist

That is the way it is supposed to work when the column is specified by name.
The patch did not change that in any way.

I am just confused why attribute numbers are handled differently than
attribute names.

I am not entirely sure, but that boat sailed a long time ago and really has nothing to do with this patch ;-)

This is the code comment that predates the patch but is the reason behind the change:

------------
/*
 * has_any_column_privilege variants
 *              These are all named "has_any_column_privilege" at the SQL level.
 *              They take various combinations of relation name, relation OID,
 *              user name, user OID, or implicit user = current_user.
 *
 *              The result is a boolean value: true if user has the indicated
 *              privilege for any column of the table, false if not.  The 
variants
 *              that take a relation OID return NULL if the OID doesn't exist.
 */
------------

The patch made that last sentence true in the corner cases.

Joe
--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development


Reply via email to