I noticed that the recent custom-path commit completely ignored my
advice about not including executor headers into planner headers or
vice versa. On the way to fixing that, I was dismayed to discover
that the RLS patch has utterly bollixed all semblance of modularization
of the headers. src/include/rewrite/rowsecurity.h, which one would
reasonably think to be a rewriter header (nevermind its header comment
to the contrary), nonetheless includes execnodes.h (executor stuff)
and relation.h (planner stuff), neither of which a rewriter header
has any business including. And if that weren't bad enough, it's
been included into utils/rel.h (relcache), which is close enough
to guaranteeing that all planner and executor symbols are visible
in every darn module we've got. Might as well just put everything
we have in postgres.h and abandon all pretense of modularity.
This needs to be cleaned up. If you don't want me doing it with
an axe, better put some suggestions forward.
regards, tom lane