Hello,
execnodes.h is a very large source of other headers for no very good
reasons anymore. Fortunately there's a few of the files it includes
that we can remove very easily with just a small number of additional
typedefs. Some proposed patches attached; it's all very
straightforward, just add typedefs for structs
Tuplesortstate
Tuplestorestate
TupleConversionMap
TupleTableSlot
TupleTableSlotOps
TIDBitmap
This also requires to add some headers to a bunch of .c files, which is
a good indicator that we're making progress.
It's especially nice when the new #include line we have to add in some
.c file is not the one that was removed from the .h file -- for instance
in 0001 we have to add pg_type_d.h when removing tuplestore.h/
tuplesort.h, and if you look at the chart here
https://doxygen.postgresql.org/tuplesort_8h.html it becomes very clear
we're saving quite a lot of useless indirect inclusions. (This is also
seen in 0004: we remove tuptable.h and have to add sysattr.h to three .c
files).
--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
"You don't solve a bad join with SELECT DISTINCT" #CupsOfFail
https://twitter.com/connor_mc_d/status/1431240081726115845