diff options
Diffstat (limited to 'contrib/file_fdw/file_fdw.c')
-rw-r--r-- | contrib/file_fdw/file_fdw.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/contrib/file_fdw/file_fdw.c b/contrib/file_fdw/file_fdw.c index 8ccc1675488..2d2b0b6a6b9 100644 --- a/contrib/file_fdw/file_fdw.c +++ b/contrib/file_fdw/file_fdw.c @@ -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) { |