From 7a4f72d7ac89a62c94ad6e8e7dbeca5b8c1e35a3 Mon Sep 17 00:00:00 2001 From: Seongjun Shin Date: Sun, 19 Jul 2026 17:23:52 +0900 Subject: [PATCH] Rename INITIAL keyword token to INITIAL_P to avoid macro collision The row pattern recognition patch adds an INITIAL keyword. With bison 2.3 -- still emitted by macOS's system bison, and the minimum the tree supports -- the token is emitted as "#define INITIAL" in gram.h, which collides with flex's built-in INITIAL start condition ("#define INITIAL 0") and produces -Wmacro-redefined warnings in the backend and ecpg scanners. Rename the token to INITIAL_P, following the existing convention (NULL_P, TRUE_P, IN_P, ...). The SQL keyword itself ("initial") is unchanged. --- src/backend/parser/gram.y | 10 +++++----- src/include/parser/kwlist.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 731b01eb742..a12e2411a7f 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -793,7 +793,7 @@ static const char *rpr_invalid_quantifier_token(const char *tok); HANDLER HAVING HEADER_P HOLD HOUR_P IDENTITY_P IF_P IGNORE_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IMPORT_P IN_P INCLUDE - INCLUDING INCREMENT INDENT INDEX INDEXES INHERIT INHERITS INITIAL INITIALLY INLINE_P + INCLUDING INCREMENT INDENT INDEX INDEXES INHERIT INHERITS INITIAL_P INITIALLY INLINE_P INNER_P INOUT INPUT_P INSENSITIVE INSERT INSTEAD INT_P INTEGER INTERSECT INTERVAL INTO INVOKER IS ISNULL ISOLATION @@ -947,7 +947,7 @@ static const char *rpr_invalid_quantifier_token(const char *tok); %nonassoc UNBOUNDED NESTED /* ideally would have same precedence as IDENT */ %nonassoc IDENT PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP SET KEYS OBJECT_P SCALAR TO USING VALUE_P WITH WITHOUT PATH - AFTER INITIAL SEEK PATTERN_P + AFTER INITIAL_P SEEK PATTERN_P %left Op OPERATOR RIGHT_ARROW '|' /* multi-character ops and user-defined operators */ %left '+' '-' %left '*' '/' '%' @@ -17613,7 +17613,7 @@ opt_row_pattern_skip_to: ; opt_row_pattern_initial_or_seek: - INITIAL { $$ = true; } + INITIAL_P { $$ = true; } | SEEK { ereport(ERROR, @@ -19410,7 +19410,7 @@ unreserved_keyword: | INDEXES | INHERIT | INHERITS - | INITIAL + | INITIAL_P | INLINE_P | INPUT_P | INSENSITIVE @@ -20021,7 +20021,7 @@ bare_label_keyword: | INDEXES | INHERIT | INHERITS - | INITIAL + | INITIAL_P | INITIALLY | INLINE_P | INNER_P diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h index 3894fad9023..d140d5a94a7 100644 --- a/src/include/parser/kwlist.h +++ b/src/include/parser/kwlist.h @@ -222,7 +222,7 @@ PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("indexes", INDEXES, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inherit", INHERIT, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inherits", INHERITS, UNRESERVED_KEYWORD, BARE_LABEL) -PG_KEYWORD("initial", INITIAL, UNRESERVED_KEYWORD, BARE_LABEL) +PG_KEYWORD("initial", INITIAL_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("initially", INITIALLY, RESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inline", INLINE_P, UNRESERVED_KEYWORD, BARE_LABEL) PG_KEYWORD("inner", INNER_P, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL) -- 2.50.1 (Apple Git-155)