From 08b5b8076e135d9f9bd811a6e00da8ecf75b9569 Mon Sep 17 00:00:00 2001 From: zhangxubo <2578876417@qq.com> Date: Wed, 11 Oct 2023 03:35:22 +0000 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=20'Pull=20Request=20!4082=20?= =?UTF-8?q?:=20=E3=80=90=E4=BB=A3=E7=A0=81=E5=90=8C=E6=AD=A5=E3=80=91?= =?UTF-8?q?=E5=87=8F=E5=B0=91btree=E9=83=A8=E5=88=86=E5=88=86=E6=94=AF?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=20#3928'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/storage/access/nbtree/nbtsearch.cpp | 4 +++- src/gausskernel/storage/access/ubtree/ubtsearch.cpp | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gausskernel/storage/access/nbtree/nbtsearch.cpp b/src/gausskernel/storage/access/nbtree/nbtsearch.cpp index 24bdcf8b8..14a52d5dd 100644 --- a/src/gausskernel/storage/access/nbtree/nbtsearch.cpp +++ b/src/gausskernel/storage/access/nbtree/nbtsearch.cpp @@ -83,6 +83,7 @@ BTStack _bt_search(Relation rel, BTScanInsert key, Buffer *bufP, int access, boo ItemId itemid; IndexTuple itup; BlockNumber blkno; + BlockNumber par_blkno; BTStack new_stack = NULL; /* @@ -113,6 +114,7 @@ BTStack _bt_search(Relation rel, BTScanInsert key, Buffer *bufP, int access, boo itemid = PageGetItemId(page, offnum); itup = (IndexTuple)PageGetItem(page, itemid); blkno = BTreeInnerTupleGetDownLink(itup); + par_blkno = BufferGetBlockNumber(*bufP); /* * We need to save the location of the index entry we chose in the @@ -126,7 +128,7 @@ BTStack _bt_search(Relation rel, BTScanInsert key, Buffer *bufP, int access, boo */ if (needStack) { new_stack = (BTStack)palloc(sizeof(BTStackData)); - new_stack->bts_blkno = BufferGetBlockNumber(*bufP); + new_stack->bts_blkno = par_blkno; new_stack->bts_offset = offnum; new_stack->bts_btentry = blkno; new_stack->bts_parent = stack_in; diff --git a/src/gausskernel/storage/access/ubtree/ubtsearch.cpp b/src/gausskernel/storage/access/ubtree/ubtsearch.cpp index 65bc635db..22893d32f 100644 --- a/src/gausskernel/storage/access/ubtree/ubtsearch.cpp +++ b/src/gausskernel/storage/access/ubtree/ubtsearch.cpp @@ -81,6 +81,7 @@ BTStack UBTreeSearch(Relation rel, BTScanInsert key, Buffer *bufP, int access, b ItemId itemid; IndexTuple itup; BlockNumber blkno; + BlockNumber par_blkno; BTStack new_stack = NULL; /* @@ -111,6 +112,7 @@ BTStack UBTreeSearch(Relation rel, BTScanInsert key, Buffer *bufP, int access, b itup = (IndexTuple) PageGetItem(page, itemid); Assert(UBTreeTupleIsPivot(itup) || !key->heapkeyspace); blkno = UBTreeTupleGetDownLink(itup); + par_blkno = BufferGetBlockNumber(*bufP); /* * We need to save the location of the index entry we chose in the @@ -128,7 +130,7 @@ BTStack UBTreeSearch(Relation rel, BTScanInsert key, Buffer *bufP, int access, b */ if (needStack) { new_stack = (BTStack)palloc(sizeof(BTStackData)); - new_stack->bts_blkno = BufferGetBlockNumber(*bufP); + new_stack->bts_blkno = par_blkno; new_stack->bts_offset = offnum; new_stack->bts_btentry = blkno; new_stack->bts_parent = stack_in; @@ -1841,4 +1843,4 @@ bool UBTreeGetTupleInternal(IndexScanDesc scan, ScanDirection dir) } while (so->numArrayKeys && _bt_advance_array_keys(scan, dir)); return res; -} +} \ No newline at end of file