Re: Avoid circular header file dependency
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2025-04-26T18:55:51Z
Lists: pgsql-hackers
Attachments
- v2-dont-include-plpy_util.h-in-plpython.h.patch (text/x-diff) patch v2
Bertrand Drouvot <bertranddrouvot.pg@gmail.com> writes: > On Sat, Apr 26, 2025 at 01:20:56AM -0400, Tom Lane wrote: >> Whatever it contains, we need to kill it with fire before the problem >> metastasizes like it did the last time. (yeah, yeah, badly mixed >> metaphors) I can take a look at this one over the weekend if nobody >> beats me to it. > I had a look at it, what do you think about 0002 attached? (Not 100% sure > that's the best approach though). After looking at this, I think the actual problem is that plpython.h does this: /* * Used throughout, so it's easier to just include it everywhere. */ #include "plpy_util.h" which is exactly the sort of cowboy modularity violation that hurts when you have to clean it up. Taking that out requires having to manually include plpy_util.h in all the relevant .c files, but on the other hand we can remove their vestigial direct inclusions of plpython.h. It was always pretty silly to #include that after including some plpy_foo.h files, so let's stop doing so. The attached patch therefore boils down in most places to s/plpython.h/plpy_util.h/. (A small number of these files still compiled without that, indicating that they're not actually using plpy_util.h today. But I figured we might as well just do it uniformly.) regards, tom lane
Commits
-
Remove circular #include's between wait_event.h and wait_event_types.h
- b225c5e76ed1 18.0 landed
-
Remove circular #include's between plpython.h and plpy_util.h.
- 2311f193ea7d 18.0 landed