diff options
author | Peter Geoghegan <pg@bowt.ie> | 2024-11-04 11:04:30 -0500 |
---|---|---|
committer | Peter Geoghegan <pg@bowt.ie> | 2024-11-04 11:04:30 -0500 |
commit | b6558e4f837e5c8f923e405ef6ab957ac2bd095a (patch) | |
tree | 8bd7f1723d7ad7ee8e296ae4aeab7c18d6675f8a | |
parent | 3c0fd64fec8ed6fa3987c33f076fcffbc3f268c3 (diff) | |
download | postgresql-b6558e4f837e5c8f923e405ef6ab957ac2bd095a.tar.gz postgresql-b6558e4f837e5c8f923e405ef6ab957ac2bd095a.zip |
nbtree: Remove useless 'strat' local variable.
Remove a local variable that was used to avoid overwriting strat_total
with the = operator strategy when a >= operator strategy key was already
included in the initial positioning/insertion scan keys by _bt_first
(for backwards scans it would have to be a <= key that was included).
_bt_first's strat_total local variable now simply tracks the operator
strategy of the final scan key that was included in the scan's insertion
scan key (barring the case where the !used_all_subkeys row compare path
adjusts strat_total in its own way).
_bt_first already treated >= keys (or <= keys) as = keys for initial
positioning purposes. There is no good reason to remember that that was
what happened; no later _bt_first step cares about the distinction.
Note, in particular, that the insertion scan key's 'nextkey' and
'backward' fields will be initialized the same way regardless.
Author: Peter Geoghegan <pg@bowt.ie>
Reviewed-By: Tomas Vondra <tomas@vondra.me>
Discussion: https://postgr.es/m/CAH2-Wz=PKR6rB7qbx+Vnd7eqeB5VTcrW=iJvAsTsKbdG+kW_UA@mail.gmail.com
-rw-r--r-- | src/backend/access/nbtree/nbtsearch.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c index 177bc226aaf..d6023732c9b 100644 --- a/src/backend/access/nbtree/nbtsearch.c +++ b/src/backend/access/nbtree/nbtsearch.c @@ -883,7 +883,6 @@ _bt_first(IndexScanDesc scan, ScanDirection dir) BTScanOpaque so = (BTScanOpaque) scan->opaque; BTStack stack; OffsetNumber offnum; - StrategyNumber strat; BTScanInsertData inskey; ScanKey startKeys[INDEX_MAX_KEYS]; ScanKeyData notnullkeys[INDEX_MAX_KEYS]; @@ -1090,18 +1089,11 @@ _bt_first(IndexScanDesc scan, ScanDirection dir) break; startKeys[keysz++] = chosen; - /* - * Adjust strat_total, and quit if we have stored a > or < - * key. - */ - strat = chosen->sk_strategy; - if (strat != BTEqualStrategyNumber) - { - strat_total = strat; - if (strat == BTGreaterStrategyNumber || - strat == BTLessStrategyNumber) - break; - } + /* Quit if we have stored a > or < key */ + strat_total = chosen->sk_strategy; + if (strat_total == BTGreaterStrategyNumber || + strat_total == BTLessStrategyNumber) + break; /* * Done if that was the last attribute, or if next key is not |