Subject: Re: remove bits* types

From: Robert Haas <[email-masked]>
Date: Wed, 18 Mar 2026 19:15:29 -0400

On Wed, Mar 18, 2026 at 6:41 PM Tom Lane <[email-masked]> wrote:
> In short: maybe we don't want to go in the direction Nathan suggests,
> but if we keep these types we should make an effort to use them
> more consistently, so there's work to be done in that direction too.

I'm definitely -1 on trying to use them more consistently. This is a
261 line patch. The reverse patch to use these types everywhere that
we use integers as a collection of bits is probably 100 times that
size. If you took that idea to its logical conclusion, every flags
variable in the backend would end up getting converted.

I'm not entirely sure that this is worth standardizing at all; if
someone thinks that using bits8 or whatever makes the code more rather
than less clear in a certain context, who am I to argue? If someone
else prefers uint8 in another context, also fine.

But if we are going to standardize, I think the only sensible choice
is what Nathan's done here. The reverse would be an insane amount of
code churn.

-- 
Robert Haas
EDB: http://www.enterprisedb.com

---

From: Nathan Bossart <[email-masked]>
Date: Thu, 19 Mar 2026 09:47:26 -0500

> variable in the backend would end up getting converted.

This is definitely not accurate, but I counted around 400 such cases for
the reverse patch:

$ grep -E "int[0-9]* (flags|options)" src/* -rI | wc -l
     409

> is what Nathan's done here. The reverse would be an insane amount of

While nobody seems totally opposed to the idea, it does seem to be
generating some discussion.  I'd rather not distract more important work
for v19, so I'm happy to put it on the shelf for now.

-- 
nathan