Subject: Re: pgstat include expansion

From: Alvaro Herrera <[email-masked]>
Date: Thu, 26 Feb 2026 16:59:12 +0100

On 2026-Feb-26, Andres Freund wrote:

> On 2026-02-26 14:52:10 +0100, Alvaro Herrera wrote:
> > This one removes wait_event.h from pgstat.h.  The only difference from
> > the previous one, aside from the fact that I had to add pgstat.h to a
> > few more .c files, is that xlogreader.c needs to include it inside the
> > #ifndef FRONTEND; otherwise, "ninja -t missingdeps" complain about the
> > file being used in pg_rewind and pg_waldump (seen in CI).
> 
> I'm somewhat worried about the amount of breakage this will cause in
> extensions.  Many extensions use something like
>    WaitLatch(wait_event_info = WAIT_EVENT_EXTENSION)
> and many of them won't have included wait_event.h.

Yeah, I considered that, and instead of breaking these, to include
wait_event.h in latch.h.  This sounds a very reasonable thing to do.
But then I searched for other headers that have a wait_event_info
parameter in one of their functions, and if we force those to also
acquire wait_event.h, then the pollution is much worse than if we just
leave it in pgstat.h.  (condition_variable.h, fd.h, proc.h, barrier.h). 

The problem is that some of those headers are in turn being included by
others; most notably condition_variable.h is used in execnodes.h and
others, and that makes a huge mess.  (And it can't be removed.)

However, maybe we can just not be so principled about it, add it to
latch.h, and then we don't break the whole world.  I'll try that.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
"Finally, the phrase, 'No one was ever fired for buying an IBM' I don't believe
has ever been translated into German."                       (Leonard Tramiel)