The way it was worded, the %u placeholder could be read as the table
OID.  Rearrange slightly to avoid the possible confusion.
Reported-by: jian he <jian.universality@gmail.com>
Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/CACJufxFx-25XQV%2Br23oku7ZnL958P30hyb9cFeYPv6wv7yzCCw%40mail.gmail.com
        if (RelationGetDescr(ctx->rel)->natts < ctx->natts)
        {
                report_corruption(ctx,
-                                                 psprintf("number of attributes %u exceeds maximum expected for table %u",
+                                                 psprintf("number of attributes %u exceeds maximum %u expected for table",
                                                                   ctx->natts,
                                                                   RelationGetDescr(ctx->rel)->natts));
                return;
 
                $tup->{t_infomask2} |= HEAP_NATTS_MASK;
 
                push @expected,
-                 qr/${$header}number of attributes 2047 exceeds maximum expected for table 3/;
+                 qr/${$header}number of attributes 2047 exceeds maximum 3 expected for table/;
        }
        elsif ($offnum == 10)
        {
                $tup->{t_hoff} = 32;
 
                push @expected,
-                 qr/${$header}number of attributes 67 exceeds maximum expected for table 3/;
+                 qr/${$header}number of attributes 67 exceeds maximum 3 expected for table/;
        }
        elsif ($offnum == 12)
        {