mirror of https://github.com/postgres/postgres
Fix nbtree lookahead overflow bug.
Add bounds checking to nbtree's lookahead/skip-within-a-page mechanism.
Otherwise it's possible for cases with lots of before-array-keys tuples
to overflow an int16 variable, causing the mechanism to generate an out
of bounds page offset number.
Oversight in commit 5bf748b8
, which enhanced nbtree ScalarArrayOp
execution.
Reported-By: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/6c68ac42-bbb5-8b24-103e-af0e279c536f@gmail.com
Backpatch: 17-, where nbtree SAOP execution was enhanced.
This commit is contained in:
parent
dbe37f1adb
commit
09a8407dbf
|
@ -4091,7 +4091,7 @@ _bt_checkkeys_look_ahead(IndexScanDesc scan, BTReadPageState *pstate,
|
|||
*/
|
||||
if (!pstate->targetdistance)
|
||||
pstate->targetdistance = LOOK_AHEAD_DEFAULT_DISTANCE;
|
||||
else
|
||||
else if (pstate->targetdistance < MaxIndexTuplesPerPage / 2)
|
||||
pstate->targetdistance *= 2;
|
||||
|
||||
/* Don't read past the end (or before the start) of the page, though */
|
||||
|
|
Loading…
Reference in New Issue