From df82bb12da55dc1c8915bbd21b10c36ceed80d6a Mon Sep 17 00:00:00 2001 From: WangMingxuan <504013468@qq.com> Date: Wed, 22 May 2024 14:49:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dvacuum=E5=9C=A8=E8=B0=83?= =?UTF-8?q?=E7=94=A8UBTreeVacuumPage=E6=97=B6=E5=8F=AF=E8=83=BD=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E4=B8=8D=E5=9B=9E=E6=94=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/storage/access/ubtree/ubtpage.cpp | 2 +- src/gausskernel/storage/access/ubtree/ubtree.cpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/storage/access/ubtree/ubtpage.cpp b/src/gausskernel/storage/access/ubtree/ubtpage.cpp index a3166ae6d..b22ce67b3 100644 --- a/src/gausskernel/storage/access/ubtree/ubtpage.cpp +++ b/src/gausskernel/storage/access/ubtree/ubtpage.cpp @@ -165,7 +165,7 @@ Buffer UBTreeGetRoot(Relation rel, int access) BufferDesc *buf = GetBufferDescriptor(rootbuf - 1); // caveat for GetBufferDescriptor for -1! valid = PinBuffer(buf, NULL); if (valid && TryLockBuffer(rootbuf, BT_READ, false)) { - isRootCacheValid = buf->tag.forkNum == MAIN_FORKNUM && + isRootCacheValid = (!IS_EXRTO_STANDBY_READ) && (buf->tag.forkNum == MAIN_FORKNUM) && RelFileNodeEquals(buf->tag.rnode, rel->rd_node) && (buf->tag.blockNum == rootblkno); if (!isRootCacheValid) { UnlockReleaseBuffer(rootbuf); diff --git a/src/gausskernel/storage/access/ubtree/ubtree.cpp b/src/gausskernel/storage/access/ubtree/ubtree.cpp index 1708d06e1..1f93835b1 100644 --- a/src/gausskernel/storage/access/ubtree/ubtree.cpp +++ b/src/gausskernel/storage/access/ubtree/ubtree.cpp @@ -905,6 +905,11 @@ restart: if (minoff <= maxoff) { stats->num_index_tuples += maxoff - minoff + 1; } + + if(vstate->cycleid !=0 && opaque->btpo_cycleid == vstate->cycleid + && !(opaque->btpo_flags & BTP_SPLIT_END) && !P_RIGHTMOST(opaque) && opaque->btpo_next < origBlkno){ + recurseTo = opaque->btpo_next; + } } if (deleteNow) {