On Wed, Mar 6, 2024 at 3:02 PM Richard Guo <guofenglinux@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')