Don't prematurely cram a value into a short int.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 31 Mar 2021 20:45:17 +0000 (16:45 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 31 Mar 2021 20:45:24 +0000 (16:45 -0400)
Since a4d75c86b, some buildfarm members have been warning that
Assert(attnum <= MaxAttrNumber);
is useless if attnum is an AttrNumber.  I'm not certain how plausible
it is that the value coming out of the bitmap could actually exceed
MaxAttrNumber, but we seem to have thought that that was possible back
in 7300a6995.  Revert the intermediate variable to int so that we have
the same overflow protection as before.

src/backend/statistics/extended_stats.c

index 8c75690fce816234850f31848fe4ef155646374b..dd3c84a91c0413fcfb4a1e008678cc959fa1a7f7 100644 (file)
@@ -978,7 +978,7 @@ build_attnums_array(Bitmapset *attrs, int nexprs, int *numattrs)
    j = -1;
    while ((j = bms_next_member(attrs, j)) >= 0)
    {
-       AttrNumber  attnum = (j - nexprs);
+       int         attnum = (j - nexprs);
 
        /*
         * Make sure the bitmap contains only user-defined attributes. As