mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Remove bms_first_member().
This function has been semi-deprecated ever since we invented bms_next_member(). Its habit of scribbling on the input bitmapset isn't great, plus for sufficiently large bitmapsets it would take O(N^2) time to complete a loop. Now we have the additional problem that reducing the input to empty while leaving it still accessible would violate a planned invariant. So let's just get rid of it, after updating the few extant callers to use bms_next_member(). Patch by me; thanks to Nathan Bossart and Richard Guo for review. Discussion: https://postgr.es/m/1159933.1677621588@sss.pgh.pa.us
This commit is contained in:
@ -858,7 +858,7 @@ check_selective_binary_conversion(RelOptInfo *baserel,
|
||||
ListCell *lc;
|
||||
Relation rel;
|
||||
TupleDesc tupleDesc;
|
||||
AttrNumber attnum;
|
||||
int attidx;
|
||||
Bitmapset *attrs_used = NULL;
|
||||
bool has_wholerow = false;
|
||||
int numattrs;
|
||||
@ -901,10 +901,11 @@ check_selective_binary_conversion(RelOptInfo *baserel,
|
||||
rel = table_open(foreigntableid, AccessShareLock);
|
||||
tupleDesc = RelationGetDescr(rel);
|
||||
|
||||
while ((attnum = bms_first_member(attrs_used)) >= 0)
|
||||
attidx = -1;
|
||||
while ((attidx = bms_next_member(attrs_used, attidx)) >= 0)
|
||||
{
|
||||
/* Adjust for system attributes. */
|
||||
attnum += FirstLowInvalidHeapAttributeNumber;
|
||||
/* attidx is zero-based, attnum is the normal attribute number */
|
||||
AttrNumber attnum = attidx + FirstLowInvalidHeapAttributeNumber;
|
||||
|
||||
if (attnum == 0)
|
||||
{
|
||||
|
@ -231,7 +231,8 @@ check_relation_privileges(Oid relOid,
|
||||
updated = fixup_whole_row_references(relOid, updated);
|
||||
columns = bms_union(selected, bms_union(inserted, updated));
|
||||
|
||||
while ((index = bms_first_member(columns)) >= 0)
|
||||
index = -1;
|
||||
while ((index = bms_next_member(columns, index)) >= 0)
|
||||
{
|
||||
AttrNumber attnum;
|
||||
uint32 column_perms = 0;
|
||||
|
Reference in New Issue
Block a user