From 4f04a1aefc4a5a041e1070f0cbae2f8fa9ff5e40 Mon Sep 17 00:00:00 2001 From: Henson Choi Date: Mon, 8 Jun 2026 14:59:00 +0900 Subject: [PATCH 65/68] Use width-explicit integer limit macros in row pattern recognition Replace INT_MAX/INT16_MAX/INT32_MAX/INT64_MAX/UINT8_MAX with the PG_INT*_MAX/PG_UINT8_MAX equivalents, and type RPRPatternNode.min/max as int32 to match the plan representation. Value- and output-preserving. --- src/backend/commands/explain.c | 2 +- src/backend/executor/execRPR.c | 11 +++-- src/backend/executor/nodeWindowAgg.c | 16 +++---- src/backend/optimizer/plan/createplan.c | 14 +++--- src/backend/optimizer/plan/rpr.c | 6 +-- src/backend/parser/gram.y | 64 ++++++++++++------------- src/backend/utils/adt/ruleutils.c | 6 +-- src/include/nodes/execnodes.h | 2 +- src/include/nodes/parsenodes.h | 4 +- src/include/optimizer/rpr.h | 11 +++-- 10 files changed, 69 insertions(+), 67 deletions(-) diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 7992829d5c4..70fd7f386a0 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -3270,7 +3270,7 @@ show_window_def(WindowAggState *planstate, List *ancestors, ExplainState *es) es); break; case RPR_NAV_OFFSET_FIXED: - if (firstOffset == INT64_MAX) + if (firstOffset == PG_INT64_MAX) ExplainPropertyText("Nav Mark Lookahead", "infinite", es); else diff --git a/src/backend/executor/execRPR.c b/src/backend/executor/execRPR.c index b7e3c4a8274..1c89875a306 100644 --- a/src/backend/executor/execRPR.c +++ b/src/backend/executor/execRPR.c @@ -1546,7 +1546,7 @@ nfa_advance(WindowAggState *winstate, RPRNFAContext *ctx, int64 currentPos) sizeof(bitmapword) * (winstate->nfaVisitedMaxWord - winstate->nfaVisitedMinWord + 1)); - winstate->nfaVisitedMinWord = INT16_MAX; + winstate->nfaVisitedMinWord = PG_INT16_MAX; winstate->nfaVisitedMaxWord = -1; } @@ -1807,10 +1807,11 @@ ExecRPRProcessRow(WindowAggState *winstate, int64 currentPos, int64 ctxFrameEnd; /* - * Clamp to INT64_MAX on overflow. frameOffset can be as large as - * PG_INT64_MAX (e.g. "ROWS FOLLOWING"), so add the offset - * and the trailing +1 in two separately checked steps to avoid - * signed-integer overflow in the "frameOffset + 1" subexpression. + * Clamp to PG_INT64_MAX on overflow. frameOffset can be as large + * as PG_INT64_MAX (e.g. "ROWS FOLLOWING"), so add the + * offset and the trailing +1 in two separately checked steps to + * avoid signed-integer overflow in the "frameOffset + 1" + * subexpression. */ if (pg_add_s64_overflow(ctx->matchStartRow, frameOffset, &ctxFrameEnd) || diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c index 95f4f06501e..13661181986 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -3070,7 +3070,7 @@ ExecInitWindowAgg(WindowAgg *node, EState *estate, int eflags) winstate->nfaVisitedElems = palloc0(sizeof(bitmapword) * nfaVisitedNWords); /* High-water mark sentinels: no bits set yet. */ - winstate->nfaVisitedMinWord = INT16_MAX; + winstate->nfaVisitedMinWord = PG_INT16_MAX; winstate->nfaVisitedMaxWord = -1; } @@ -4048,7 +4048,7 @@ typedef struct * NEXT_LAST (= max(inner - outer, 0)) * - minFirstOffset (forward reach from match_start): FIRST, * compound PREV_FIRST (= inner - outer, may be negative), - * compound NEXT_FIRST (= inner + outer, clamped to INT64_MAX on + * compound NEXT_FIRST (= inner + outer, clamped to PG_INT64_MAX on * overflow; always >= 0 so never updates minFirstOffset in practice) * * Counterpart of visit_nav_plan but using runtime evaluation instead of @@ -4137,7 +4137,7 @@ visit_nav_exec(NavTraversal *t, RPRNavExpr *nav) { /* * reach = inner - outer. Both are non-negative, so the result >= - * -INT64_MAX, which cannot underflow int64. + * -PG_INT64_MAX, which cannot underflow int64. */ reach = inner - outer; } @@ -4146,10 +4146,10 @@ visit_nav_exec(NavTraversal *t, RPRNavExpr *nav) /* * NEXT_FIRST: reach = inner + outer. This can overflow, but the * result is always >= 0, so it never updates minFirstOffset - * (which tracks the minimum). Clamp to INT64_MAX on overflow. + * (which tracks the minimum). Clamp to PG_INT64_MAX on overflow. */ if (pg_add_s64_overflow(inner, outer, &reach)) - reach = INT64_MAX; + reach = PG_INT64_MAX; } context->minFirstOffset = Min(context->minFirstOffset, reach); } @@ -4184,7 +4184,7 @@ eval_define_offsets(WindowAggState *winstate, List *defineClause) ctx.winstate = winstate; ctx.maxOffset = 0; ctx.maxOverflow = false; - ctx.minFirstOffset = INT64_MAX; + ctx.minFirstOffset = PG_INT64_MAX; trav.visit = visit_nav_exec; trav.data = &ctx; @@ -4213,10 +4213,10 @@ eval_define_offsets(WindowAggState *winstate, List *defineClause) if (needsFirst) { winstate->navFirstOffsetKind = RPR_NAV_OFFSET_FIXED; - if (ctx.minFirstOffset < INT64_MAX) + if (ctx.minFirstOffset < PG_INT64_MAX) winstate->navFirstOffset = ctx.minFirstOffset; else - winstate->navFirstOffset = INT64_MAX; + winstate->navFirstOffset = PG_INT64_MAX; } } diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 5608d71cbe2..d2e19d61d58 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -2669,8 +2669,8 @@ visit_nav_plan(NavTraversal *t, RPRNavExpr *nav) { /* * reach = inner - outer. Both are non-negative, so the - * result >= -INT64_MAX, which cannot underflow int64. No - * overflow check needed. + * result >= -PG_INT64_MAX, which cannot underflow int64. + * No overflow check needed. */ reach = inner - outer; } @@ -2680,10 +2680,10 @@ visit_nav_plan(NavTraversal *t, RPRNavExpr *nav) * NEXT_FIRST: reach = inner + outer. This can overflow, * but the result is always >= 0, so it never updates * firstOffset (which tracks the minimum). Clamp to - * INT64_MAX on overflow. + * PG_INT64_MAX on overflow. */ if (pg_add_s64_overflow(inner, outer, &reach)) - reach = INT64_MAX; + reach = PG_INT64_MAX; } context->firstOffset = Min(context->firstOffset, reach); @@ -2741,7 +2741,7 @@ compute_define_metadata(List *defineClause, ctx.maxOffset = 0; ctx.maxNeedsEval = false; ctx.maxOverflow = false; - ctx.firstOffset = INT64_MAX; /* sentinel: no FIRST found yet */ + ctx.firstOffset = PG_INT64_MAX; /* sentinel: no FIRST found yet */ ctx.hasFirst = false; ctx.firstNeedsEval = false; ctx.curVarIdx = 0; @@ -2789,8 +2789,8 @@ compute_define_metadata(List *defineClause, else { *firstKind = RPR_NAV_OFFSET_FIXED; - *firstResult = ctx.firstOffset; /* may be negative; INT64_MAX if - * overflowed */ + *firstResult = ctx.firstOffset; /* may be negative; PG_INT64_MAX + * if overflowed */ } } else diff --git a/src/backend/optimizer/plan/rpr.c b/src/backend/optimizer/plan/rpr.c index 9364136b071..d768422deeb 100644 --- a/src/backend/optimizer/plan/rpr.c +++ b/src/backend/optimizer/plan/rpr.c @@ -1210,7 +1210,7 @@ fillRPRPatternVar(RPRPatternNode *node, RPRPattern *pat, int *idx, RPRDepth dept elem->varId = getVarIdFromPattern(pat, node->varName); elem->depth = depth; elem->min = node->min; - elem->max = (node->max == INT_MAX) ? RPR_QUANTITY_INF : node->max; + elem->max = (node->max == PG_INT32_MAX) ? RPR_QUANTITY_INF : node->max; Assert(elem->min >= 0 && elem->min < RPR_QUANTITY_INF && elem->max >= 1 && (elem->max == RPR_QUANTITY_INF || elem->min <= elem->max)); @@ -1263,7 +1263,7 @@ fillRPRPatternGroup(RPRPatternNode *node, RPRPattern *pat, int *idx, RPRDepth de elem->varId = RPR_VARID_BEGIN; elem->depth = depth; elem->min = node->min; - elem->max = (node->max == INT_MAX) ? RPR_QUANTITY_INF : node->max; + elem->max = (node->max == PG_INT32_MAX) ? RPR_QUANTITY_INF : node->max; Assert(elem->min >= 0 && elem->min < RPR_QUANTITY_INF && elem->max >= 1 && (elem->max == RPR_QUANTITY_INF || elem->min <= elem->max)); @@ -1291,7 +1291,7 @@ fillRPRPatternGroup(RPRPatternNode *node, RPRPattern *pat, int *idx, RPRDepth de endElem->varId = RPR_VARID_END; endElem->depth = depth; endElem->min = node->min; - endElem->max = (node->max == INT_MAX) ? RPR_QUANTITY_INF : node->max; + endElem->max = (node->max == PG_INT32_MAX) ? RPR_QUANTITY_INF : node->max; Assert(endElem->min >= 0 && endElem->min < RPR_QUANTITY_INF && endElem->max >= 1 && (endElem->max == RPR_QUANTITY_INF || endElem->min <= endElem->max)); diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index e0799f35638..ac2e5d7914a 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -212,7 +212,7 @@ static void preprocess_pubobj_list(List *pubobjspec_list, static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); static RPRPatternNode *makeRPRSeqOrSingle(List *children, int location); static RPRPatternNode *splitRPRTrailingAlt(RPRPatternNode *node, core_yyscan_t yyscanner); -static RPRPatternNode *makeRPRQuantifier(int min, int max, ParseLoc reluctant, int location, +static RPRPatternNode *makeRPRQuantifier(int32 min, int32 max, ParseLoc reluctant, int location, core_yyscan_t yyscanner); %} @@ -17745,11 +17745,11 @@ row_pattern_quantifier_opt: } | '*' { - $$ = (Node *) makeRPRQuantifier(0, INT_MAX, -1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(0, PG_INT32_MAX, -1, @1, yyscanner); } | '+' { - $$ = (Node *) makeRPRQuantifier(1, INT_MAX, -1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(1, PG_INT32_MAX, -1, @1, yyscanner); } | Op { @@ -17757,19 +17757,19 @@ row_pattern_quantifier_opt: if (strcmp($1, "?") == 0) $$ = (Node *) makeRPRQuantifier(0, 1, -1, @1, yyscanner); else if (strcmp($1, "*?") == 0) - $$ = (Node *) makeRPRQuantifier(0, INT_MAX, @1 + 1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(0, PG_INT32_MAX, @1 + 1, @1, yyscanner); else if (strcmp($1, "+?") == 0) - $$ = (Node *) makeRPRQuantifier(1, INT_MAX, @1 + 1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(1, PG_INT32_MAX, @1 + 1, @1, yyscanner); else if (strcmp($1, "??") == 0) $$ = (Node *) makeRPRQuantifier(0, 1, @1 + 1, @1, yyscanner); else if (strcmp($1, "*|") == 0) { - $$ = (Node *) makeRPRQuantifier(0, INT_MAX, -1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(0, PG_INT32_MAX, -1, @1, yyscanner); ((RPRPatternNode *) $$)->trailing_alt = true; } else if (strcmp($1, "+|") == 0) { - $$ = (Node *) makeRPRQuantifier(1, INT_MAX, -1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(1, PG_INT32_MAX, -1, @1, yyscanner); ((RPRPatternNode *) $$)->trailing_alt = true; } else if (strcmp($1, "?|") == 0) @@ -17779,12 +17779,12 @@ row_pattern_quantifier_opt: } else if (strcmp($1, "*?|") == 0) { - $$ = (Node *) makeRPRQuantifier(0, INT_MAX, @1 + 1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(0, PG_INT32_MAX, @1 + 1, @1, yyscanner); ((RPRPatternNode *) $$)->trailing_alt = true; } else if (strcmp($1, "+?|") == 0) { - $$ = (Node *) makeRPRQuantifier(1, INT_MAX, @1 + 1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(1, PG_INT32_MAX, @1 + 1, @1, yyscanner); ((RPRPatternNode *) $$)->trailing_alt = true; } else if (strcmp($1, "??|") == 0) @@ -17803,11 +17803,11 @@ row_pattern_quantifier_opt: | '*' Op { if (strcmp($2, "?") == 0) - $$ = (Node *) makeRPRQuantifier(0, INT_MAX, @2, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(0, PG_INT32_MAX, @2, @1, yyscanner); else if (strcmp($2, "?|") == 0) { /* "A* ?|B" = reluctant "A*?" plus alternation */ - $$ = (Node *) makeRPRQuantifier(0, INT_MAX, @2, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(0, PG_INT32_MAX, @2, @1, yyscanner); ((RPRPatternNode *) $$)->trailing_alt = true; } else @@ -17820,11 +17820,11 @@ row_pattern_quantifier_opt: | '+' Op { if (strcmp($2, "?") == 0) - $$ = (Node *) makeRPRQuantifier(1, INT_MAX, @2, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(1, PG_INT32_MAX, @2, @1, yyscanner); else if (strcmp($2, "?|") == 0) { /* "A+ ?|B" = reluctant "A+?" plus alternation */ - $$ = (Node *) makeRPRQuantifier(1, INT_MAX, @2, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier(1, PG_INT32_MAX, @2, @1, yyscanner); ((RPRPatternNode *) $$)->trailing_alt = true; } else @@ -17860,37 +17860,37 @@ row_pattern_quantifier_opt: /* {n}, {n,}, {,m}, {n,m} quantifiers */ | '{' Iconst '}' { - if ($2 <= 0 || $2 >= INT_MAX) + if ($2 <= 0 || $2 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bound must be between 1 and %d", INT_MAX - 1), + errmsg("quantifier bound must be between 1 and %d", PG_INT32_MAX - 1), parser_errposition(@2)); $$ = (Node *) makeRPRQuantifier($2, $2, -1, @1, yyscanner); } | '{' Iconst ',' '}' { - if ($2 < 0 || $2 >= INT_MAX) + if ($2 < 0 || $2 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bound must be between 0 and %d", INT_MAX - 1), + errmsg("quantifier bound must be between 0 and %d", PG_INT32_MAX - 1), parser_errposition(@2)); - $$ = (Node *) makeRPRQuantifier($2, INT_MAX, -1, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier($2, PG_INT32_MAX, -1, @1, yyscanner); } | '{' ',' Iconst '}' { - if ($3 <= 0 || $3 >= INT_MAX) + if ($3 <= 0 || $3 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bound must be between 1 and %d", INT_MAX - 1), + errmsg("quantifier bound must be between 1 and %d", PG_INT32_MAX - 1), parser_errposition(@3)); $$ = (Node *) makeRPRQuantifier(0, $3, -1, @1, yyscanner); } | '{' Iconst ',' Iconst '}' { - if ($2 < 0 || $4 <= 0 || $2 >= INT_MAX || $4 >= INT_MAX) + if ($2 < 0 || $4 <= 0 || $2 >= PG_INT32_MAX || $4 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bounds must be between 0 and %d with max >= 1", INT_MAX - 1), + errmsg("quantifier bounds must be between 0 and %d with max >= 1", PG_INT32_MAX - 1), parser_errposition(@2)); if ($2 > $4) ereport(ERROR, @@ -17908,10 +17908,10 @@ row_pattern_quantifier_opt: errmsg("invalid token after range quantifier"), errhint("Only \"?\" is allowed after {n} to make it reluctant."), parser_errposition(@4)); - if ($2 <= 0 || $2 >= INT_MAX) + if ($2 <= 0 || $2 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bound must be between 1 and %d", INT_MAX - 1), + errmsg("quantifier bound must be between 1 and %d", PG_INT32_MAX - 1), parser_errposition(@2)); $$ = (Node *) makeRPRQuantifier($2, $2, @4, @1, yyscanner); if (strcmp($4, "?|") == 0) @@ -17925,12 +17925,12 @@ row_pattern_quantifier_opt: errmsg("invalid token after range quantifier"), errhint("Only \"?\" is allowed after {n,} or {,m} to make it reluctant."), parser_errposition(@5)); - if ($2 < 0 || $2 >= INT_MAX) + if ($2 < 0 || $2 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bound must be between 0 and %d", INT_MAX - 1), + errmsg("quantifier bound must be between 0 and %d", PG_INT32_MAX - 1), parser_errposition(@2)); - $$ = (Node *) makeRPRQuantifier($2, INT_MAX, @5, @1, yyscanner); + $$ = (Node *) makeRPRQuantifier($2, PG_INT32_MAX, @5, @1, yyscanner); if (strcmp($5, "?|") == 0) ((RPRPatternNode *) $$)->trailing_alt = true; } @@ -17942,10 +17942,10 @@ row_pattern_quantifier_opt: errmsg("invalid token after range quantifier"), errhint("Only \"?\" is allowed after {n,} or {,m} to make it reluctant."), parser_errposition(@5)); - if ($3 <= 0 || $3 >= INT_MAX) + if ($3 <= 0 || $3 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bound must be between 1 and %d", INT_MAX - 1), + errmsg("quantifier bound must be between 1 and %d", PG_INT32_MAX - 1), parser_errposition(@3)); $$ = (Node *) makeRPRQuantifier(0, $3, @5, @1, yyscanner); if (strcmp($5, "?|") == 0) @@ -17959,10 +17959,10 @@ row_pattern_quantifier_opt: errmsg("invalid token after range quantifier"), errhint("Only \"?\" is allowed after {n,m} to make it reluctant."), parser_errposition(@6)); - if ($2 < 0 || $4 <= 0 || $2 >= INT_MAX || $4 >= INT_MAX) + if ($2 < 0 || $4 <= 0 || $2 >= PG_INT32_MAX || $4 >= PG_INT32_MAX) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), - errmsg("quantifier bounds must be between 0 and %d with max >= 1", INT_MAX - 1), + errmsg("quantifier bounds must be between 0 and %d with max >= 1", PG_INT32_MAX - 1), parser_errposition(@2)); if ($2 > $4) ereport(ERROR, @@ -21400,7 +21400,7 @@ makeRecursiveViewSelect(char *relname, List *aliases, Node *query) * Create an RPRPatternNode with specified quantifier bounds. */ static RPRPatternNode * -makeRPRQuantifier(int min, int max, ParseLoc reluctant_location, int location, +makeRPRQuantifier(int32 min, int32 max, ParseLoc reluctant_location, int location, core_yyscan_t yyscanner) { RPRPatternNode *n = makeNode(RPRPatternNode); diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index e8087d4316a..d588cd8263d 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -7124,13 +7124,13 @@ append_pattern_quantifier(StringInfo buf, RPRPatternNode *node) /* {1,1} = no quantifier */ has_quantifier = false; } - else if (node->min == 0 && node->max == INT_MAX) + else if (node->min == 0 && node->max == PG_INT32_MAX) appendStringInfoChar(buf, '*'); - else if (node->min == 1 && node->max == INT_MAX) + else if (node->min == 1 && node->max == PG_INT32_MAX) appendStringInfoChar(buf, '+'); else if (node->min == 0 && node->max == 1) appendStringInfoChar(buf, '?'); - else if (node->max == INT_MAX) + else if (node->max == PG_INT32_MAX) appendStringInfo(buf, "{%d,}", node->min); else if (node->min == node->max) appendStringInfo(buf, "{%d}", node->min); diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 77d75aca91f..dca0bbc3e30 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -2672,7 +2672,7 @@ typedef struct WindowAggState bitmapword *nfaVisitedElems; /* elemIdx visited bitmap for cycle * detection */ int16 nfaVisitedMinWord; /* lowest bitmapword index touched since - * last reset (INT16_MAX = none) */ + * last reset (PG_INT16_MAX = none) */ int16 nfaVisitedMaxWord; /* highest bitmapword index touched since * last reset (-1 = none) */ int64 nfaLastProcessedRow; /* last row processed by NFA (-1 = diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 9636a8efca1..16f31dbe7ff 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -625,8 +625,8 @@ typedef struct RPRPatternNode { NodeTag type; /* T_RPRPatternNode */ RPRPatternNodeType nodeType; /* VAR, SEQ, ALT, GROUP */ - int min; /* minimum repetitions (0 for *, ?) */ - int max; /* maximum repetitions (INT_MAX for *, +) */ + int32 min; /* minimum repetitions (0 for *, ?) */ + int32 max; /* maximum repetitions (PG_INT32_MAX for *, +) */ bool reluctant; /* true for reluctant (non-greedy) */ ParseLoc reluctant_location; /* location of '?' token, or -1 */ ParseLoc location; /* token location, or -1 */ diff --git a/src/include/optimizer/rpr.h b/src/include/optimizer/rpr.h index 73c827de2b1..8e0bc7efc53 100644 --- a/src/include/optimizer/rpr.h +++ b/src/include/optimizer/rpr.h @@ -26,12 +26,13 @@ * before release. */ #define RPR_VARID_MAX 0xEF /* pattern variables are 0 to 0xEF */ -#define RPR_QUANTITY_INF INT32_MAX /* unbounded quantifier */ -#define RPR_COUNT_MAX INT32_MAX /* max runtime count (NFA state) */ -#define RPR_ELEMIDX_MAX INT16_MAX /* max pattern elements */ +#define RPR_QUANTITY_INF PG_INT32_MAX /* unbounded quantifier */ +#define RPR_COUNT_MAX PG_INT32_MAX /* max runtime count (NFA state) */ +#define RPR_ELEMIDX_MAX PG_INT16_MAX /* max pattern elements */ #define RPR_ELEMIDX_INVALID ((RPRElemIdx) -1) /* invalid index */ -#define RPR_DEPTH_MAX (UINT8_MAX - 1) /* max pattern nesting depth: 254 */ -#define RPR_DEPTH_NONE UINT8_MAX /* no enclosing group (top-level) */ +#define RPR_DEPTH_MAX (PG_UINT8_MAX - 1) /* max pattern nesting depth: + * 254 */ +#define RPR_DEPTH_NONE PG_UINT8_MAX /* no enclosing group (top-level) */ /* Reserved control-element varIds (high nibble 0xF; 0xF0-0xFB spare) */ #define RPR_VARID_BEGIN ((RPRVarId) 0xFC) /* group begin */ -- 2.50.1 (Apple Git-155)