Re: some more include removal from headers

From: Andres Freund <andres(at)anarazel(dot)de>
To: Álvaro Herrera <alvherre(at)kurilemu(dot)de>
Cc: Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: some more include removal from headers
Date: 2026-03-13 21:14:03
Message-ID: qox6yqkety63epa4puqc7qm2f4dzs72s6ejtxbf277yamb43ne@rd2u267htgzm
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2026-03-13 20:32:53 +0100, Álvaro Herrera wrote:
> On 2026-Mar-13, Andres Freund wrote:
>
> > Kinda wonder if funcapi.h should export tuplestore.h. That'd avoid needing
> > adding the dedicated tuplestore.h in so many places, and as the use of
> > tuplestore is basically required for funcapi.h users, it seems like it'd be
> > fine semantically?
>
> Hmm. I think there are plenty of SRF functions that use the
> value-per-call mechanics instead of a tuplestore (which don't need
> tuplestore.h), but I wouldn't be opposed to doing that. I was going to
> complain about that change dragging tuptable.h into funcapi.h -- until I
> realized that funcapi.h already includes tuptable.h directly itself. So
> I don't see any downsides.

Cool.

> > If we could go back in time I'd wrap the tuplestore_puttuple() for the SRF use
> > case into an SRF specific wrapper, but my time travel capabilities have not
> > developed, despite no lack of trying.
>
> hah! (We could still change this now, and while it wouldn't change
> older code or existing third party extensions, it might definitely make
> things better going forward; the future being longer than the past, this
> might be good anyhow. But that's a matter for a separate thread.)

Agreed...

> > The need for dsa.h and condition_variable.h just is from
> > ParallelBitmapHeapState - which isn't actually an executor node and never
> > needed outside of nodeBitmapHeapscan.c - so it seems better to move it there?
> >
> > Added a commit for that.
>
> Whoa, nice!

Thanks.

> > Your patch numbering says 5/6, but there's only 5 attached, I assume that was
> > intentional?
>
> Yeah, the last one was about removing tidbitmap.h from genam.h -- I left
> it out at the last minute because it's unrelated to execnodes.h.
> Attached here.

Nice improvement. LGTM.

> > I couldn't help myself to slim down execnodes.h further. Not sure if all of
> > them are quite worth it.
>
> The relpath.h one is definitely a good win.

Yea.

> Not sure about stringinfo.h, which doesn't change very often and doesn't
> include anything else.

It seemed worth it because it's not used by plannodes.h, it's a leftover from
before a05dc4d7fd5.

> I'm doubtful about the bitmapset.h removal gaining
> us much either (because the really nasty one below, nodetags.h, is
> unavoidable anyway.)

Yea, I was very much on the fence with that one.

> > With all the commits combined very little low-level stuff is still
> > included. The worst is probably instr_time.h.
>
> Hm, that one is worth thinking about. But with only this much, it's
> already a huge win.

Agreed, we can tackle that one separately. There's multiple paths for it too,
e.g. a separate header for the instr_time type or moving towards not not
needing to include instrument[_node].h.

How would you like to work towards committing these? I'm am more than happy
for you to commit everything, but I could also help.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2026-03-13 21:57:38 Re: [PATCH] Silence a new Valgrind warning
Previous Message Zsolt Parragi 2026-03-13 21:12:43 Re: Serverside SNI support in libpq