Re: pgstat include expansion
Álvaro Herrera <alvherre@kurilemu.de>
From: Alvaro Herrera <alvherre@kurilemu.de>
To: Andres Freund <andres@anarazel.de>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers@postgresql.org, Amit Kapila <amit.kapila16@gmail.com>, Michael Paquier <michael@paquier.xyz>
Date: 2026-02-26T15:59:12Z
Lists: pgsql-hackers
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)
Commits
-
Don't include wait_event.h in pgstat.h
- 868825aaeb40 19 (unreleased) landed
-
Don't include proc.h in shm_mq.h
- a2c89835f512 19 (unreleased) landed
-
Don't include latch.h in libpq/libpq.h
- 7b9b620d8fc7 19 (unreleased) landed
-
Reduce includes in pgstat.h
- 7bb50dd7d6b9 19 (unreleased) landed
-
Avoid including utils/timestamp.h in conflict.h.
- 308622edf174 19 (unreleased) landed
-
Avoid including worker_internal.h in pgstat.h.
- 9842e8aca096 19 (unreleased) landed
-
Add seq_sync_error_count to subscription statistics.
- f6a4c498dcf6 19 (unreleased) cited
-
Don't include execnodes.h in replication/conflict.h
- 7e638d7f5093 19 (unreleased) cited
-
Collect statistics about conflicts in logical replication.
- 6c2b5edecc0d 18.0 cited