Re: Removing #include "postgres.h" from a couple of headers

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-03-08T14:33:55Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes:
> On Wed, Mar 8, 2017 at 3:55 AM, Thomas Munro
> <thomas.munro@enterprisedb.com> wrote:
>> There are also instances in regcustom.h and snowball's header.h -- are
>> those special cases?

> I will leave this question to someone wiser (or more self-assured) than I.

I'm pretty sure I'm to blame for both of those special cases.  The genesis
of both is that we are including these headers from externally-generated
.c files, and it seemed like modifying the .c files would be a bigger
problem than violating the policy.  I am not sure if I hold that position
anymore for the regexp library; our copy has diverged substantially from
Tcl's anyway.  It's still an issue for Snowball, because those .c files
are actually machine-generated by a Snowball-to-C compiler.  We haven't
modified them and probably shouldn't.

If we don't change the code layout, we should probably at least add
comments near these postgres.h inclusions explaining why they're violating
policy.

			regards, tom lane


Commits

  1. Fix inclusions of c.h from .h files.

  2. Fix inclusions of postgres_fe.h from .h files.

  3. Bring plpgsql into line with header inclusion policy.

  4. Document intentional violations of header inclusion policy.

  5. Remove inclusion of postgres.h from a few header files.