Hi, I noticed that some asserts and cycles use magic numbers 1 and 0 instead of BTLessStrategyNumber and InvalidStrategy. At the same time, the BTMaxStrategyNumber macro is used there. I suggest using appropriate macros for 1 and 0 values.
Please, see attached patch (targeted on the master branch). -- Best regards, Daniil Davydov
From 67d2125240021f3f0f25d56630dad1d70940b40d Mon Sep 17 00:00:00 2001 From: Daniil Davidov <d.davy...@postgrespro.ru> Date: Mon, 30 Jun 2025 10:10:24 +0700 Subject: [PATCH v1] Get rid of magic numbers --- src/backend/access/brin/brin_minmax.c | 4 ++-- src/backend/access/brin/brin_minmax_multi.c | 4 ++-- src/backend/access/nbtree/nbtpreprocesskeys.c | 4 ++-- src/backend/access/nbtree/nbtvalidate.c | 2 +- src/backend/partitioning/partprune.c | 4 +++- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/backend/access/brin/brin_minmax.c b/src/backend/access/brin/brin_minmax.c index d21ab3a668c..19e953a4fd4 100644 --- a/src/backend/access/brin/brin_minmax.c +++ b/src/backend/access/brin/brin_minmax.c @@ -263,7 +263,7 @@ minmax_get_strategy_procinfo(BrinDesc *bdesc, uint16 attno, Oid subtype, { MinmaxOpaque *opaque; - Assert(strategynum >= 1 && + Assert(strategynum >= BTLessStrategyNumber && strategynum <= BTMaxStrategyNumber); opaque = (MinmaxOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; @@ -277,7 +277,7 @@ minmax_get_strategy_procinfo(BrinDesc *bdesc, uint16 attno, Oid subtype, { uint16 i; - for (i = 1; i <= BTMaxStrategyNumber; i++) + for (i = BTLessStrategyNumber; i <= BTMaxStrategyNumber; i++) opaque->strategy_procinfos[i - 1].fn_oid = InvalidOid; opaque->cached_subtype = subtype; } diff --git a/src/backend/access/brin/brin_minmax_multi.c b/src/backend/access/brin/brin_minmax_multi.c index 0d1507a2a36..f1dc40b10e7 100644 --- a/src/backend/access/brin/brin_minmax_multi.c +++ b/src/backend/access/brin/brin_minmax_multi.c @@ -2901,7 +2901,7 @@ minmax_multi_get_strategy_procinfo(BrinDesc *bdesc, uint16 attno, Oid subtype, { MinmaxMultiOpaque *opaque; - Assert(strategynum >= 1 && + Assert(strategynum >= BTLessStrategyNumber && strategynum <= BTMaxStrategyNumber); opaque = (MinmaxMultiOpaque *) bdesc->bd_info[attno - 1]->oi_opaque; @@ -2915,7 +2915,7 @@ minmax_multi_get_strategy_procinfo(BrinDesc *bdesc, uint16 attno, Oid subtype, { uint16 i; - for (i = 1; i <= BTMaxStrategyNumber; i++) + for (i = BTLessStrategyNumber; i <= BTMaxStrategyNumber; i++) opaque->strategy_procinfos[i - 1].fn_oid = InvalidOid; opaque->cached_subtype = subtype; } diff --git a/src/backend/access/nbtree/nbtpreprocesskeys.c b/src/backend/access/nbtree/nbtpreprocesskeys.c index a136e4bbfdf..b030833e370 100644 --- a/src/backend/access/nbtree/nbtpreprocesskeys.c +++ b/src/backend/access/nbtree/nbtpreprocesskeys.c @@ -360,7 +360,7 @@ _bt_preprocess_keys(IndexScanDesc scan) Assert(OidIsValid(orderproc->fn_oid)); } - for (j = BTMaxStrategyNumber; --j >= 0;) + for (j = BTMaxStrategyNumber; --j >= InvalidStrategy;) { ScanKey chk = xform[j].inkey; @@ -438,7 +438,7 @@ _bt_preprocess_keys(IndexScanDesc scan) * sufficient to form an unbroken series of "=" constraints on all * attrs prior to the attr from the final scan->keyData[] key. */ - for (j = BTMaxStrategyNumber; --j >= 0;) + for (j = BTMaxStrategyNumber; --j >= InvalidStrategy;) { if (xform[j].inkey) { diff --git a/src/backend/access/nbtree/nbtvalidate.c b/src/backend/access/nbtree/nbtvalidate.c index 817ad358f0c..03729892cde 100644 --- a/src/backend/access/nbtree/nbtvalidate.c +++ b/src/backend/access/nbtree/nbtvalidate.c @@ -140,7 +140,7 @@ btvalidate(Oid opclassoid) Form_pg_amop oprform = (Form_pg_amop) GETSTRUCT(oprtup); /* Check that only allowed strategy numbers exist */ - if (oprform->amopstrategy < 1 || + if (oprform->amopstrategy < BTLessStrategyNumber || oprform->amopstrategy > BTMaxStrategyNumber) { ereport(INFO, diff --git a/src/backend/partitioning/partprune.c b/src/backend/partitioning/partprune.c index 48a35f763e9..0d9ac307b17 100644 --- a/src/backend/partitioning/partprune.c +++ b/src/backend/partitioning/partprune.c @@ -1526,7 +1526,9 @@ gen_prune_steps_from_opexps(GeneratePruningStepsContext *context, * combinations of expressions of different keys, which * get_steps_using_prefix takes care of for us. */ - for (strat = 1; strat <= BTMaxStrategyNumber; strat++) + for (strat = BTLessStrategyNumber; + strat <= BTMaxStrategyNumber; + strat++) { foreach(lc, btree_clauses[strat]) { -- 2.43.0