Обсуждение: 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