Refactor nbtree fastpath optimization.

Peter Geoghegan <pg@bowt.ie>

Commit: b029395f5e616e0f2b1131b2c7ecb6640f30c055
Author: Peter Geoghegan <pg@bowt.ie>
Date: 2020-03-18T21:42:49Z
Releases: 13.0
Refactor nbtree fastpath optimization.

Commit 2b272734, which added the fastpath rightmost leaf page cache
insert optimization, added code to _bt_doinsert() to handle using and
invalidating the backend local block cache.  It doesn't seem like a good
place to handle these low level details, though.  _bt_doinsert() is
supposed to be a high level function -- it is the main entry point to
nbtinsert.c.

Restructure the code by placing handling of the rightmost block cache at
the start of a new _bt_search() shim function, _bt_search_insert().  The
new function is called from _bt_doinsert(), which uses it as a
_bt_search() variant that conveniently accepts its BTInsertState state
as an argument.  _bt_doinsert() no longer needs to directly consider the
fastpath optimization.

Discussion: https://postgr.es/m/CAH2-Wzk59cxKJRd=rfbyub6-V4yWRjsOYRkUNHBLT1P1GdtCQQ@mail.gmail.com

Files

PathChange+/−
src/backend/access/nbtree/nbtinsert.c modified +160 −125

Discussion