> On Aug 29, 2025, at 20:45, Peter Eisentraut <pe...@eisentraut.org> wrote:
> 
> (After this, it would probably be possible to undertake some deeper efforts 
> to untangle header files, with the help of IWYU.  But that is a separate 
> project.)
> <0001-Improve-pgbench-definition-of-yyscan_t.patch><0002-Allow-redeclaration-of-typedef-yyscan_t.patch><0003-Remove-workarounds-against-repeat-typedefs.patch><0004-Improve-ExplainState-type-handling-in-header-files.patch><0005-Update-various-forward-declarations-to-use-typedef.patch><0006-Remove-hbaPort-type.patch><0007-Change-fmgr.h-typedefs-to-use-original-names.patch>



I applied the patch files and build passed without any error and warning on my 
MacBook.

Just a few small comments:

1. For 0001, I think “#ifdef YY_TYPEDEF_YY_SCANNER_T” is not needed, but I see 
you have removed that in 0002, so this is not a comment now.

2. For 0002, looks like som duplicate code for definitions of

Union YYSTYPE;
#define YYLTYPE int
Typedef void *yyscan_t;

Can we put them into a separate header file say src/include/yy_types.h?

3. For 0002, this is not your change, I am just pointing it out: “#define 
YYSTYPE char *”, where “YYSTYPE” is defined as “union” everywhere else. Can we 
rename it to something like “YYSTYPE_CHARPTR” here to avoid confusion? I tried 
to rename it and build still passed.

4. For 0004

diff --git a/src/include/commands/explain_dr.h 
b/src/include/commands/explain_dr.h
index 55da63d66bd..ce424aa2a55 100644
--- a/src/include/commands/explain_dr.h
+++ b/src/include/commands/explain_dr.h
@@ -16,7 +16,7 @@
 #include "executor/instrument.h"
 #include "tcop/dest.h"

-struct ExplainState;                   /* avoid including explain.h here */
+typedef struct ExplainState ExplainState;      /* avoid including explain.h 
here */

“Struct ExplainState” is defined in explain_state.h, so the comment here should 
be “avoid including explain_state.h here”.

Same thing applies to explain_format.h and fdwapi.h.

5. For 0005

diff --git a/src/include/optimizer/optimizer.h 
b/src/include/optimizer/optimizer.h
index 03b214755c2..d490ef3b506 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -35,9 +35,9 @@ typedef struct IndexOptInfo IndexOptInfo;
 typedef struct SpecialJoinInfo SpecialJoinInfo;

 /* It also seems best not to include plannodes.h, params.h, or htup.h here */
-struct PlannedStmt;
-struct ParamListInfoData;
-struct HeapTupleData;
+typedef struct PlannedStmt PlannedStmt;
+typedef struct ParamListInfoData ParamListInfoData;
+typedef struct HeapTupleData *HeapTuple;

Why don’t define ParamListInfo in the same way as HeapTuple like “typedef 
structure ParamListInfoData *ParamListInfo”. I tried that in my local and build 
still passed.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/




Reply via email to