Re: Unused header file inclusion

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, vignesh C <vignesh21@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2019-08-19T20:46:26Z
Lists: pgsql-hackers
Hi,

On 2019-08-19 13:07:50 -0700, Andres Freund wrote:
> On 2019-08-18 14:37:34 -0400, Tom Lane wrote:
> > That's with a script I use that's like cpluspluscheck except it tests
> > with plain gcc not g++.  I attached it for the archives' sake.
> > 
> > Oddly, cpluspluscheck does not complain about those cases, but it
> > does complain about
> 
> Hm. I don't understand why it's not complaining. Wonder if it's a
> question of the flags or such.

I'ts caused by -fsyntax-only

# These switches are g++ specific, you may override if necessary.
CXXFLAGS=${CXXFLAGS:- -fsyntax-only -Wall}

which also explains why your headercheck doesn't have that problem, it
doesn't use -fsyntax-only.


> > (My headerscheck script is missing that header; I need to update it to
> > match the latest version of cpluspluscheck.)
> 
> I wonder if we should just add a #ifndef HEADERCHECK or such to the
> headers that we don't want to process as standalone headers (or #ifndef
> NOT_STANDALONE or whatever). That way multiple tools can rely on these markers,
> rather than copying knowledge about that kind of information into
> multiple places.
> 
> I wish we could move the whole logic of those scripts into makefiles, so
> we could employ parallelism.

Hm. Perhaps the way to do that would be to use gcc's -include to include
postgres.h, and use -Wc++-compat to detect c++ issues, rather than using
g++. Without tempfiles it ought to be a lot easier to just do all of the
relevant work in make, without a separate shell script. The
python/perl/ecpg logic would b e abit annoying, but probably not too
bad? Think we could just always add all of them?

Greetings,

Andres Freund



Commits

  1. Add fmgr.h include to selfuncs.h.

  2. Add "headerscheck" script to test header-file compilability under C.

  3. Fix failure-to-compile-standalone in scripts_parallel.h.

  4. Remove fmgr.h includes from headers that don't really need it.

  5. Don't include utils/array.h from acl.h.

  6. Remove redundant prototypes for SQL callable functions.

  7. Remove unnecessary #include <limits.h>

  8. Teach tuplesort.c about "top N" sorting, in which only the first N tuples