Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qNwD6-006Npd-7u for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Jul 2023 14:06:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qNwD4-00Au2U-DE for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Jul 2023 14:06:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qNwD4-00Au2M-3m for pgsql-hackers@lists.postgresql.org; Mon, 24 Jul 2023 14:06:50 +0000 Received: from mail-ua1-x92f.google.com ([2607:f8b0:4864:20::92f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qNwD2-0001ZS-01 for pgsql-hackers@postgresql.org; Mon, 24 Jul 2023 14:06:49 +0000 Received: by mail-ua1-x92f.google.com with SMTP id a1e0cc1a2514c-791b8500a1dso1075294241.1 for ; Mon, 24 Jul 2023 07:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690207606; x=1690812406; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=67M1NsuGeeG3aSJCkXug6Y5JUvIqcEUag9J9BmJO3qQ=; b=gTIvVqcOpw0X+nKnuvf6Hy2rf4TdADF8tOj1dXtq2bORc8vStS9CV0rIw/9+t/43Wb CJBFJkE2T8f440giOQBMZDEXT05d9PCnCJUM4miGBm3trx9NLGCBBT8jy3B0SwM4QMZF BH2A5XcfngA3M/accVgn2bSJKwmoctJJndd0+jvldwR0IRjyYy+I2dxassMvnJuiNWPX rObITnSN45UHYrGPPToO/t/c2UkNtZiDJqDBe2Qfq/vVvqVJ54qK+RQYJmnPVU4TT6C+ UjybFpOfCk//PtqtQNHwjSFPMO9qNNKHGqQod9dgDnFfcZwB/tbq/PKpCE+1ApXBvqDB ogVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690207606; x=1690812406; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=67M1NsuGeeG3aSJCkXug6Y5JUvIqcEUag9J9BmJO3qQ=; b=CmtziPVaFqXAzlLauLCPWvkHMpiWytt/DXbj7sNgW6OYiaCDIWPIMYojCvzCQ+0fzv gdnzekYEpU3d0M8/TAt2s6eygXB9kCVTaVq7Pqnm8iGijbMAiC+7wFI84gUwu3T47LON 9/dZiW/yUkG2qzkeqSHopw3UhiSYTD/CoNGagCCLr2cItNZf66uswglLn80rk5UaTeG2 WvizjM7xOnJZ41xXN+RFn2h8DdbEr3SyrbPz/w2afAczJoB1F3aBZGGdfCc34H2s7rkr YKrogwXxPQbeduQ2NTy5qJNQrmmtxJRIr8y5xXIEYGUit3AnO7casBIMrwZp2zX/YJhW 0N9A== X-Gm-Message-State: ABy/qLYXawahcjettjTeup7umAA/pYcKVMBymunJAEn/1CtnVI3DjzxH A0/z5eIHpGN7Ofs3wj8oXsLQIMt6mbDssSJKjC8nWwR3V/KE7A== X-Google-Smtp-Source: APBJJlEU0XPpq0MsPjmszbIlPPdM7mHunK+fK3+2anbfTnAcgS26FNzx96DcxiHLlucjrxsamzaM4WctQova3NjL5/I= X-Received: by 2002:a67:ba09:0:b0:444:481d:f1 with SMTP id l9-20020a67ba09000000b00444481d00f1mr2128856vsn.19.1690207605805; Mon, 24 Jul 2023 07:06:45 -0700 (PDT) MIME-Version: 1.0 From: jian he Date: Mon, 24 Jul 2023 22:06:34 +0800 Message-ID: Subject: bt_recheck_sibling_links contrib/amcheck/verify_nbtree.c To: PostgreSQL-development Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk hi. I am confused with bt_recheck_sibling_links. > > ereport(ERROR, > (errcode(ERRCODE_INDEX_CORRUPTED), > errmsg("left link/right link pair in index \"%s\" not in agreement", > RelationGetRelationName(state->rel)), > errdetail_internal("Block=%u left block=%u left link from block=%u.", > state->targetblock, leftcurrent, > btpo_prev_from_target))); should we put the above code into the branch {if (!state->readonly)} ? I can understand it if put inside. now the whole function be like: if (!state->readonly) {} erreport{}. --------------------------------------------------------------------------------- if (btpo_prev_from_target == leftcurrent) { /* Report split in left sibling, not target (or new target) */ ereport(DEBUG1, (errcode(ERRCODE_INTERNAL_ERROR), errmsg_internal("harmless concurrent page split detected in index \"%s\"", RelationGetRelationName(state->rel)), errdetail_internal("Block=%u new right sibling=%u original right sibling=%u.", leftcurrent, newtargetblock, state->targetblock))); return; } only concurrency read case, (btpo_prev_from_target == leftcurrent) will be true? If so, then I am confused with the ereport content.