On Wed, Mar 6, 2024 at 6:25 PM Bharath Rupireddy <
bharath.rupireddyforpostg...@gmail.com> wrote:

> On Wed, Mar 6, 2024 at 3:02 PM Richard Guo <guofengli...@gmail.com> wrote:
> >
> > I think we generally follow the rule that we include 'postgres.h' or
> > 'postgres_fe.h' first, followed by system header files, and then
> > postgres header files ordered in ASCII value.  I noticed that in some C
> > files we fail to follow this rule strictly.  Attached is a patch to fix
> > this.
> >
> > Back in 2019, we performed the same operation in commits 7e735035f2,
> > dddf4cdc33, and 14aec03502.  It appears that the code has deviated from
> > that point onwards.
> >
> > Please note that this patch only addresses the order of header file
> > includes in backend modules (and might not be thorough).  It is possible
> > that other modules may have a similar issue, but I have not evaluated
> > them yet.
>
> +1. I'm just curious to know if you've leveraged any tool from
> src/tools/pginclude or any script or such.


Thanks for looking.

While rebasing one of my patches I noticed that the header file includes
in relnode.c are not sorted in order.  So I wrote a naive script to see
if any other C files have the same issue.  The script is:

#!/bin/bash

find . -name "*.c" | while read -r file; do
  headers=$(grep -o '#include "[^>]*"' "$file" |
            grep -v "postgres.h" | grep -v "postgres_fe.h" |
            sed 's/\.h"//g')

  sorted_headers=$(echo "$headers" | sort)

  results=$(diff <(echo "$headers") <(echo "$sorted_headers"))

  if [[ $? != 0 ]]; then
    echo "Headers in '$file' are out of order"
    echo $results
    echo
  fi
done

Thanks
Richard

Reply via email to