mirror of
https://github.com/postgres/postgres.git
synced 2025-06-23 14:01:44 +03:00
Fix BuildIndexValueDescription for expressions
In 804b6b6db4
we modified
BuildIndexValueDescription to pay attention to which columns are visible
to the user, but unfortunatley that commit neglected to consider indexes
which are built on expressions.
Handle error-reporting of violations of constraint indexes based on
expressions by not returning any detail when the user does not have
table-level SELECT rights.
Backpatch to 9.0, as the prior commit was.
Pointed out by Tom.
This commit is contained in:
@ -222,10 +222,15 @@ BuildIndexValueDescription(Relation indexRelation,
|
||||
{
|
||||
AttrNumber attnum = idxrec->indkey.values[keyno];
|
||||
|
||||
aclresult = pg_attribute_aclcheck(indrelid, attnum, GetUserId(),
|
||||
ACL_SELECT);
|
||||
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
/*
|
||||
* Note that if attnum == InvalidAttrNumber, then this is an
|
||||
* index based on an expression and we return no detail rather
|
||||
* than try to figure out what column(s) the expression includes
|
||||
* and if the user has SELECT rights on them.
|
||||
*/
|
||||
if (attnum == InvalidAttrNumber ||
|
||||
pg_attribute_aclcheck(indrelid, attnum, GetUserId(),
|
||||
ACL_SELECT) != ACLCHECK_OK)
|
||||
{
|
||||
/* No access, so clean up and return */
|
||||
ReleaseSysCache(ht_idx);
|
||||
|
Reference in New Issue
Block a user