mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-28 01:21:49 +02:00
Remove unneeded argument from _bt_getstackbuf().
_bt_getstackbuf() is called at exactly two points following commit
efada2b8e9
(one call site is concerned with page splits, while the
other is concerned with page deletion). The parent buffer returned by
_bt_getstackbuf() is write-locked in both cases. Remove the 'access'
argument and make _bt_getstackbuf() assume that callers require a
write-lock.
This commit is contained in:
parent
067786cea0
commit
2ab23445bc
@ -1886,7 +1886,7 @@ _bt_insert_parent(Relation rel,
|
|||||||
* 05/27/97
|
* 05/27/97
|
||||||
*/
|
*/
|
||||||
stack->bts_btentry = bknum;
|
stack->bts_btentry = bknum;
|
||||||
pbuf = _bt_getstackbuf(rel, stack, BT_WRITE);
|
pbuf = _bt_getstackbuf(rel, stack);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we can unlock the right child. The left child will be unlocked
|
* Now we can unlock the right child. The left child will be unlocked
|
||||||
@ -1976,10 +1976,11 @@ _bt_finish_split(Relation rel, Buffer lbuf, BTStack stack)
|
|||||||
*
|
*
|
||||||
* Adjusts bts_blkno & bts_offset if changed.
|
* Adjusts bts_blkno & bts_offset if changed.
|
||||||
*
|
*
|
||||||
* Returns InvalidBuffer if item not found (should not happen).
|
* Returns write-locked buffer, or InvalidBuffer if item not found
|
||||||
|
* (should not happen).
|
||||||
*/
|
*/
|
||||||
Buffer
|
Buffer
|
||||||
_bt_getstackbuf(Relation rel, BTStack stack, int access)
|
_bt_getstackbuf(Relation rel, BTStack stack)
|
||||||
{
|
{
|
||||||
BlockNumber blkno;
|
BlockNumber blkno;
|
||||||
OffsetNumber start;
|
OffsetNumber start;
|
||||||
@ -1993,11 +1994,11 @@ _bt_getstackbuf(Relation rel, BTStack stack, int access)
|
|||||||
Page page;
|
Page page;
|
||||||
BTPageOpaque opaque;
|
BTPageOpaque opaque;
|
||||||
|
|
||||||
buf = _bt_getbuf(rel, blkno, access);
|
buf = _bt_getbuf(rel, blkno, BT_WRITE);
|
||||||
page = BufferGetPage(buf);
|
page = BufferGetPage(buf);
|
||||||
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
|
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
|
||||||
|
|
||||||
if (access == BT_WRITE && P_INCOMPLETE_SPLIT(opaque))
|
if (P_INCOMPLETE_SPLIT(opaque))
|
||||||
{
|
{
|
||||||
_bt_finish_split(rel, buf, stack->bts_parent);
|
_bt_finish_split(rel, buf, stack->bts_parent);
|
||||||
continue;
|
continue;
|
||||||
|
@ -1153,7 +1153,7 @@ _bt_lock_branch_parent(Relation rel, BlockNumber child, BTStack stack,
|
|||||||
* if needed)
|
* if needed)
|
||||||
*/
|
*/
|
||||||
stack->bts_btentry = child;
|
stack->bts_btentry = child;
|
||||||
pbuf = _bt_getstackbuf(rel, stack, BT_WRITE);
|
pbuf = _bt_getstackbuf(rel, stack);
|
||||||
if (pbuf == InvalidBuffer)
|
if (pbuf == InvalidBuffer)
|
||||||
elog(ERROR, "failed to re-find parent key in index \"%s\" for deletion target page %u",
|
elog(ERROR, "failed to re-find parent key in index \"%s\" for deletion target page %u",
|
||||||
RelationGetRelationName(rel), child);
|
RelationGetRelationName(rel), child);
|
||||||
|
@ -528,7 +528,7 @@ extern void _bt_parallel_advance_array_keys(IndexScanDesc scan);
|
|||||||
*/
|
*/
|
||||||
extern bool _bt_doinsert(Relation rel, IndexTuple itup,
|
extern bool _bt_doinsert(Relation rel, IndexTuple itup,
|
||||||
IndexUniqueCheck checkUnique, Relation heapRel);
|
IndexUniqueCheck checkUnique, Relation heapRel);
|
||||||
extern Buffer _bt_getstackbuf(Relation rel, BTStack stack, int access);
|
extern Buffer _bt_getstackbuf(Relation rel, BTStack stack);
|
||||||
extern void _bt_finish_split(Relation rel, Buffer bbuf, BTStack stack);
|
extern void _bt_finish_split(Relation rel, Buffer bbuf, BTStack stack);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user