constexpr is a keyword in C23.  Rename a conflicting identifier for
future-proofing.

Obviously, C23 is way in the future, but this is a hard error that prevents any further exploration. (To be clear: This only happens if you explicitly select C23 mode. I'm not aware of a compiler where this is the default yet.)

From fa0f5ce119bff1bafd9fd278334c5caad242b6d2 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Tue, 6 Aug 2024 09:51:20 +0200
Subject: [PATCH] Rename C23 keyword

constexpr is a keyword in C23.  Rename a conflicting identifier for
future-proofing.
---
 src/backend/optimizer/util/predtest.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/backend/optimizer/util/predtest.c 
b/src/backend/optimizer/util/predtest.c
index 6e3b376f3d3..50ea8077367 100644
--- a/src/backend/optimizer/util/predtest.c
+++ b/src/backend/optimizer/util/predtest.c
@@ -948,7 +948,7 @@ boolexpr_startup_fn(Node *clause, PredIterInfo info)
 typedef struct
 {
        OpExpr          opexpr;
-       Const           constexpr;
+       Const           const_expr;
        int                     next_elem;
        int                     num_elems;
        Datum      *elem_values;
@@ -992,13 +992,13 @@ arrayconst_startup_fn(Node *clause, PredIterInfo info)
        state->opexpr.args = list_copy(saop->args);
 
        /* Set up a dummy Const node to hold the per-element values */
-       state->constexpr.xpr.type = T_Const;
-       state->constexpr.consttype = ARR_ELEMTYPE(arrayval);
-       state->constexpr.consttypmod = -1;
-       state->constexpr.constcollid = arrayconst->constcollid;
-       state->constexpr.constlen = elmlen;
-       state->constexpr.constbyval = elmbyval;
-       lsecond(state->opexpr.args) = &state->constexpr;
+       state->const_expr.xpr.type = T_Const;
+       state->const_expr.consttype = ARR_ELEMTYPE(arrayval);
+       state->const_expr.consttypmod = -1;
+       state->const_expr.constcollid = arrayconst->constcollid;
+       state->const_expr.constlen = elmlen;
+       state->const_expr.constbyval = elmbyval;
+       lsecond(state->opexpr.args) = &state->const_expr;
 
        /* Initialize iteration state */
        state->next_elem = 0;
@@ -1011,8 +1011,8 @@ arrayconst_next_fn(PredIterInfo info)
 
        if (state->next_elem >= state->num_elems)
                return NULL;
-       state->constexpr.constvalue = state->elem_values[state->next_elem];
-       state->constexpr.constisnull = state->elem_nulls[state->next_elem];
+       state->const_expr.constvalue = state->elem_values[state->next_elem];
+       state->const_expr.constisnull = state->elem_nulls[state->next_elem];
        state->next_elem++;
        return (Node *) &(state->opexpr);
 }
-- 
2.46.0

Reply via email to