Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 32bf6ee

Browse files
committed
Fix BuildIndexValueDescription for expressions
In 804b6b6 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.
1 parent e770430 commit 32bf6ee

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/backend/access/index/genam.c

+9-4
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,15 @@ BuildIndexValueDescription(Relation indexRelation,
222222
{
223223
AttrNumber attnum = idxrec->indkey.values[keyno];
224224

225-
aclresult = pg_attribute_aclcheck(indrelid, attnum, GetUserId(),
226-
ACL_SELECT);
227-
228-
if (aclresult != ACLCHECK_OK)
225+
/*
226+
* Note that if attnum == InvalidAttrNumber, then this is an
227+
* index based on an expression and we return no detail rather
228+
* than try to figure out what column(s) the expression includes
229+
* and if the user has SELECT rights on them.
230+
*/
231+
if (attnum == InvalidAttrNumber ||
232+
pg_attribute_aclcheck(indrelid, attnum, GetUserId(),
233+
ACL_SELECT) != ACLCHECK_OK)
229234
{
230235
/* No access, so clean up and return */
231236
ReleaseSysCache(ht_idx);

0 commit comments

Comments
 (0)