0003-Remove-workarounds-against-repeat-typedefs.patch
text/plain
Filename: 0003-Remove-workarounds-against-repeat-typedefs.patch
Type: text/plain
Part: 2
Patch
Format: format-patch
Series: patch 0003
Subject: Remove workarounds against repeat typedefs
| File | + | − |
|---|---|---|
| src/include/nodes/pathnodes.h | 4 | 19 |
| src/include/optimizer/optimizer.h | 1 | 12 |
From 7f69eb3293cc7ce8b00e0891250581863373d12a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Fri, 29 Aug 2025 13:18:51 +0200
Subject: [PATCH 3/7] Remove workarounds against repeat typedefs
This is allowed in C11, so we don't need the workarounds anymore.
---
src/include/nodes/pathnodes.h | 23 ++++-------------------
src/include/optimizer/optimizer.h | 13 +------------
2 files changed, 5 insertions(+), 31 deletions(-)
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h
index 4a903d1ec18..b12a2508d8c 100644
--- a/src/include/nodes/pathnodes.h
+++ b/src/include/nodes/pathnodes.h
@@ -198,9 +198,6 @@ typedef struct PlannerGlobal
* original Query. Note that at present the planner extensively modifies
* the passed-in Query data structure; someday that should stop.
*
- * For reasons explained in optimizer/optimizer.h, we define the typedef
- * either here or in that header, whichever is read first.
- *
* Not all fields are printed. (In some cases, there is no print support for
* the field type; in others, doing so would lead to infinite recursion or
* bloat dump output more than seems useful.)
@@ -211,10 +208,7 @@ typedef struct PlannerGlobal
* correctly replaced with the keeping one.
*----------
*/
-#ifndef HAVE_PLANNERINFO_TYPEDEF
typedef struct PlannerInfo PlannerInfo;
-#define HAVE_PLANNERINFO_TYPEDEF 1
-#endif
struct PlannerInfo
{
@@ -1161,14 +1155,10 @@ typedef struct RelOptInfo
* (by plancat.c), indrestrictinfo and predOK are set later, in
* check_index_predicates().
*/
-#ifndef HAVE_INDEXOPTINFO_TYPEDEF
-typedef struct IndexOptInfo IndexOptInfo;
-#define HAVE_INDEXOPTINFO_TYPEDEF 1
-#endif
struct IndexPath; /* forward declaration */
-struct IndexOptInfo
+typedef struct IndexOptInfo
{
pg_node_attr(no_copy_equal, no_read, no_query_jumble)
@@ -1270,7 +1260,7 @@ struct IndexOptInfo
/* AM's cost estimator */
/* Rather than include amapi.h here, we declare amcostestimate like this */
void (*amcostestimate) (struct PlannerInfo *, struct IndexPath *, double, Cost *, Cost *, Selectivity *, double *, double *) pg_node_attr(read_write_ignore);
-};
+} IndexOptInfo;
/*
* ForeignKeyOptInfo
@@ -3031,12 +3021,7 @@ typedef struct PlaceHolderVar
* We also create transient SpecialJoinInfos for child joins during
* partitionwise join planning, which are also not present in join_info_list.
*/
-#ifndef HAVE_SPECIALJOININFO_TYPEDEF
-typedef struct SpecialJoinInfo SpecialJoinInfo;
-#define HAVE_SPECIALJOININFO_TYPEDEF 1
-#endif
-
-struct SpecialJoinInfo
+typedef struct SpecialJoinInfo
{
pg_node_attr(no_read, no_query_jumble)
@@ -3057,7 +3042,7 @@ struct SpecialJoinInfo
bool semi_can_hash; /* true if semi_operators are all hash */
List *semi_operators; /* OIDs of equality join operators */
List *semi_rhs_exprs; /* righthand-side expressions of these ops */
-};
+} SpecialJoinInfo;
/*
* Transient outer-join clause info.
diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h
index 37bc13c2cbd..03b214755c2 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -28,22 +28,11 @@
* We don't want to include nodes/pathnodes.h here, because non-planner
* code should generally treat PlannerInfo as an opaque typedef.
* But we'd like such code to use that typedef name, so define the
- * typedef either here or in pathnodes.h, whichever is read first.
+ * typedef both here or in pathnodes.h.
*/
-#ifndef HAVE_PLANNERINFO_TYPEDEF
typedef struct PlannerInfo PlannerInfo;
-#define HAVE_PLANNERINFO_TYPEDEF 1
-#endif
-
-/* Likewise for IndexOptInfo and SpecialJoinInfo. */
-#ifndef HAVE_INDEXOPTINFO_TYPEDEF
typedef struct IndexOptInfo IndexOptInfo;
-#define HAVE_INDEXOPTINFO_TYPEDEF 1
-#endif
-#ifndef HAVE_SPECIALJOININFO_TYPEDEF
typedef struct SpecialJoinInfo SpecialJoinInfo;
-#define HAVE_SPECIALJOININFO_TYPEDEF 1
-#endif
/* It also seems best not to include plannodes.h, params.h, or htup.h here */
struct PlannedStmt;
--
2.51.0