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.96) (envelope-from ) id 1w0joq-002AOD-1D for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2026 17:27:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0joo-00GAlP-2U for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Mar 2026 17:27:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w0joo-00GAlH-1K for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2026 17:27:30 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w0jom-00000001nlr-2oaW for pgsql-hackers@lists.postgresql.org; Thu, 12 Mar 2026 17:27:30 +0000 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-439c4bde55cso904927f8f.1 for ; Thu, 12 Mar 2026 10:27:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773336447; cv=none; d=google.com; s=arc-20240605; b=GzvNejOXYuAPhuufAblB64Ou6ZcZCUzkEQlcVKWRld4X8QMmBUWPeREeQN4P2wn7BG 89Y1B6ICTiQrZElKPBBGY3+iRWkymgqNoYW0i1ylzJFXGO6Hjxdkib2VFqPxGHuRvFe6 lErZG8d2zAMQV1EQ3Rz/U3G2r8AcsHw94HoNNMuz8PXM+t5vTHo0ENzmk551KJgYDS94 pIigP6pLabgyHDSHOhqcsRfd79GpTh9Ylz5r560Fur29M+nLpajm3NFRde5G+CrdsI98 HHPK2+TID33jX2/eKwg/ruyXr3pcucT8X2iZbWfUgjfLiMNBRFJJINooyFHIfvGUxBP5 u7Jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=JEubo/DYKxj9dZifc/yhDk52bBTiOKSkUVCfVvV4SK0=; fh=zZFNdC2iEjHX3oBmD3jof8OTWz6YceerWsBqcTt0+50=; b=K0+O96AaUK7InSBzZsi1sOYh79qjpIzz5t+YyWbSokQnrho72GY+MvIOuW0+5cyN6z K0A8kLJOh3e8XxC1lmmoL+qSQoV2gwp6h3SmwepKSwxzAye6JrOp37VlNqQhguNBfK4R Uwd6Q52IhqmH2M34Tv2mFxJM6twN+gzrArUQoHH4QaiWIy2+gVoE8uTYoenWiA/Ej4FX yuZATfyhYtZS6uvl0xA6coGS7z+EHi587sviCeuY7cZ/sCjP6GN/uFOAOB05PFbsg7Tv FYjPHgdEWvAffesmCHk4cXaJkZH3zr0hNU+YJLXajYH2rd/uVA7IAQ+sD2J7a9PMLHDs /8JA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bowt-ie.20230601.gappssmtp.com; s=20230601; t=1773336447; x=1773941247; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=JEubo/DYKxj9dZifc/yhDk52bBTiOKSkUVCfVvV4SK0=; b=Wp191j+mOufD2Cc5T7M9ix4+iJUyp3OyAhV8eNU+G9Xs97ZetQaSfCoD1FG5h0LkLr zEo8Qx3S0ynvbk91DSbvSSS+jNYFteuvep2gqFG/Yfto4qLE5EkcGlfXVuFK5ybndNE6 xsBLFFkQr+xIDwYLd0ETTAv7qtFfPlHmZMdiV/kgPz6UT0gLeKrf2GVyrrD3l8kkglm1 Q7RcWkucUjS+uAiTfma1MvTRU8eCKVbuYaYdKCkK9c/fBgYV/VoOLbccnw+108biPTSl veUWHMDDvNWleUoDjCTso6oPxhN5nsez/JQeeNt1ciR5ZJRjZz7z5wUfTOlNWW4SkdkQ OOQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773336447; x=1773941247; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JEubo/DYKxj9dZifc/yhDk52bBTiOKSkUVCfVvV4SK0=; b=Mrjj0gxI79WS6+mwcIAvccBY54T6R7IqYzBO0ozVsp69GzFIKFrn8bi2ApbOjms796 03DJJ5f7UbLjJ869KZgILk0tzv52cQzLFNhkO8Nk+QMCANbcFIbKfD4kgkHlS1M+tuXJ MxXAKAa6T0AKnJ+4cH6t0M/djHu70eE0CKHRNS+wpACFXrT86dHUsDbwyxunwOC939Va IhWxdYavxBmLd+3tgsM8fcDokZSNoekLgpLcG/v4nqe1C6ae5iHYc3VxibdEFpmCnycn 023AaN11UjPt7k1Hrf60Uzo5Pcb2TKKYNSG6X0JRgvhaN/XGQlSVyfJaBnUm+4KUV0c0 kmkw== X-Forwarded-Encrypted: i=1; AJvYcCUJD8mEgGggPm0EN58CRHS8ZBtsCMtE4gJQS8Bl4Zus6S8yPmhl+qoubV+0BJJ1o/ADv9rNQk5/AUicGoyu@lists.postgresql.org X-Gm-Message-State: AOJu0YyfSBZfs5IeFZTwWCyW9ygo12IRmhqPBb+gNRUO5r/QTxiMy2vm 1ZhXw1phNBBWH/5rweEBRne4onuL7idDo5ALKmc02FarBbPgPZbGGbVu7RZ2PdkQFFzs5wuunD2 q5UERjnBq8CM4+k4eFYInfolSy72gIa1M+EkDKNwjRw== X-Gm-Gg: ATEYQzyuUpiuEc8/7BiJA2TjKR+bK6QzQDEIFtDULpp9Fsgfx6n2vuENgHKcrOpopKi 79hkkJBmSOl3VHiIy7I1mYEmlfJxr0+412btNyzGPzYe8L1u1OlvaFiDPZFqGsCkMb8MgLb+IQy c3KolZ7uS60MLulcVo4N0jompQ25aAWB/9wj6WSpJlSXrjrONEff4rvswoMfqWtFii1tJB5fUgl BZY+Z/GH5WPxvv4upMQFt23b9BJUWS5ho517dsadHh8EI9qDMcsLYvoA5qhnfBFWlyxnQVELoUF Y3Y/Pho= X-Received: by 2002:a05:6000:4014:b0:435:e3bd:5838 with SMTP id ffacd0b85a97d-43a04d8b4d7mr936027f8f.25.1773336447230; Thu, 12 Mar 2026 10:27:27 -0700 (PDT) MIME-Version: 1.0 References: <64a2re223ajj4popowsyu4xekbuvvyfwkrihn5yzyrkwsmsuvp@2lls3tpww5dl> <52512325-b1f2-4fff-819e-f68122b2e427@vondra.me> <64mfcfv7iihc4pmqlxarii4esnmqry52ckz5m7lmwylnfnuxuz@oxh4ioxkjtep> <3f748033-4679-44c2-a74d-b3306528e443@vondra.me> In-Reply-To: <3f748033-4679-44c2-a74d-b3306528e443@vondra.me> From: Peter Geoghegan Date: Thu, 12 Mar 2026 13:27:00 -0400 X-Gm-Features: AaiRm51BHRoHCYvbNDoPvPTZmqOby-KX2-ytJgMR3neLrRUuHm7lMvHBnJXhCHE Message-ID: Subject: Re: index prefetching To: Tomas Vondra Cc: Andres Freund , Alexandre Felipe , Thomas Munro , Nazir Bilal Yavuz , Robert Haas , Melanie Plageman , PostgreSQL Hackers , Georgios , Konstantin Knizhnik , Dilip Kumar Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Mar 12, 2026 at 10:43=E2=80=AFAM Tomas Vondra wro= te: > I took a quick look at 0001 and 0002 patches, and I think it's mostly > ready to go. Pushed both patches just now. Thanks for the review! > I only have a couple very minor comments: > > 1) v12-0001-Use-simple-hash-for-PrivateRefCount.patch > - the "common/hashfn.h" include seems in the wrong place Fixed in the pushed patch. > 2) v12-0002-Don-t-allocate-_bt_search-stack.patch > > - seems like a reasonable optimization for most callers > - _bt_search could set "stack_in =3D new_stack;" in the first if block, I > think it's nicer Agreed. Done that way in the commit that I pushed. > - My only concern is that _bt_search is part of the public API (at least > technically, as it's in nbtree.h), and we're removing _bt_freestack() > from the API so the callers won't have a convenient way to free it. > Maybe that's not an issue in practice, because doing a local version of > freestack is easy. I don't think that it's an issue. _bt_search is very much an nbtree-internal function (amcheck notwithstanding), and as you point out it's easy enough for an extension to create its own version of _bt_freestack in the unlikely event that it needs to. -- Peter Geoghegan