Thread: optimizer/clauses.h needn't include access/htup.h
It was only needed between these: commit a8677e3ff6bb8ef78a9ba676faa647bba237b1c4 Author: Peter Eisentraut <peter_e@gmx.net> Date: Fri Apr 13 17:06:28 2018 -0400 Support named and default arguments in CALL commit f09346a9c6218dd239fdf3a79a729716c0d305bd Author: Tom Lane <tgl@sss.pgh.pa.us> Date: Tue Jan 29 15:48:51 2019 -0500 Refactor planner's header files. I noticed while looking at "what includes what" and wondered if some of these are kind of "modularity violations". $ find src/include/ -name '*.h' -print0 |xargs -r0 awk -F'[/"]' 'NF>2 && /^#include "/{split(FILENAME,a); print a[3],"-",$2}' |awk '$1!=$3 && !/\.h|statistics|partitioning|bootstrap|tsearch|foreign|jit|regex|lib|common/' |sort |uniq-c |sort -nr |awk '$1==1' 1 utils - rewrite 1 utils - port 1 utils - parser 1 tcop - storage 1 tcop - executor 1 tcop - catalog 1 tcop - access 1 storage - postmaster 1 rewrite - catalog 1 rewrite - access 1 replication - port 1 replication - datatype 1 postmaster - datatype 1 parser - catalog 1 nodes - commands 1 executor - portability 1 executor - port 1 commands - datatype 1 catalog - port 1 catalog - parser 1 access - tcop 1 access - replication 1 access - postmaster 1 access - executor pryzbyj@pryzbyj:~/src/postgres$ find src/backend/ -name '*.c' -print0 |xargs -r0 awk -F'[/"]' 'NF>2 && /^#include "/{split(FILENAME,a);print a[3],"-",$2 }' |awk '$1!=$3 && !/\.h/&&!/common|utils|tsearch|main|foreign|port|regex|bootstrap|jit/'|sort |uniq -c |sort -nr |awk '$1==1' 1 storage - libpq 1 statistics - postmaster 1 statistics - commands 1 rewrite - tcop 1 rewrite - optimizer 1 replication - syncrep_scanner.c 1 replication - rewrite 1 replication - repl_scanner.c 1 replication - optimizer 1 postmaster - mb 1 partitioning - rewrite 1 partitioning - commands 1 nodes - mb 1 libpq - postmaster 1 libpq - mb 1 libpq - commands -- Justin
Justin Pryzby <pryzby@telsasoft.com> writes: > It was only needed between these: > commit a8677e3ff6bb8ef78a9ba676faa647bba237b1c4 > commit f09346a9c6218dd239fdf3a79a729716c0d305bd Hm, you're right. Removed. > I noticed while looking at "what includes what" and wondered if some of these > are kind of "modularity violations". Yeah. I've ranted before that we ought to have some clearer idea of module layering within the backend, and avoid cross-header inclusions that would break the layering. This particular case didn't really do so, I suppose, since htup.h would surely be on a lower level than the optimizer. But it still seems nicer to not have that inclusion. Anyway, if you're feeling motivated to explore a more wide-ranging refactoring, by all means have a go at it. regards, tom lane