Andres Freund <andres@anarazel.de> writes:
> On 2015-08-07 14:32:35 -0400, Tom Lane wrote:
>> Eventually I think we're going to have to spend some effort on making a
>> clearer separation between "front end safe" and "not front end safe"
>> header files. Until we do that, though, adding these #error directives
>> may just do more harm than good. We don't know which backend headers
>> are being used by third-party code, but we can be 100% sure it's more
>> than what's used by the frontend code in the core distribution.
> Right now the #errors are in only in places that'd also break without
> them, but only on the old platforms without inline support and in a more
> subtle way.
Indeed, but the buildfarm results say that the set of such platforms is
nearly empty. It's very likely that a lot of third-party authors won't
ever care if their code doesn't build on such platforms; certainly not
nearly as much as they'll care if their code doesn't build *at all*,
and they have no recourse except to modify the PG headers because they
need some symbol that happens to be defined in a header that also has
some lock-related junk.
My point is simply that adding those #errors represents a large bet that
the separation between frontend and backend headers is clean enough.
I really doubt that it is, and I don't see anyone volunteering to put
adequate time into fixing that right now. I'm afraid we'll put in
ugly, hurried, piecemeal hacks in response to complaints.
> I'm ok with getting lock.h from the list of headers where that's the
> case, done by removing lwlock.h from it, which I proposed that
> upthread. But then you objected to that approach.
Well, we're still discussing what's the best compromise.
regards, tom lane