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 1wI69G-007mxe-00 for pgsql-bugs@arkaria.postgresql.org; Wed, 29 Apr 2026 14:44:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wI69C-003rZ3-2Q for pgsql-bugs@arkaria.postgresql.org; Wed, 29 Apr 2026 14:44:18 +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 1wI69C-003rYh-1J for pgsql-bugs@lists.postgresql.org; Wed, 29 Apr 2026 14:44:18 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wI699-00000003MKG-0Or1 for pgsql-bugs@lists.postgresql.org; Wed, 29 Apr 2026 14:44:17 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-43d7645adbdso6976209f8f.1 for ; Wed, 29 Apr 2026 07:44:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777473853; cv=none; d=google.com; s=arc-20240605; b=S00SVj/XxgawmB7WVL1a6lpM5lBUA+qb+jyxPXxc3CL+YOFUmR3F8qL+ib1sSu127o J4v9Q6vM7TBKLOHUI+pS3Cpa9skPR403y1Tl/Vmcqq9teVp0CtX3nM8BfyFU3pXiTB+V kvWPP3ZhgekrPvxyWxPhThG3WEmzYSxV5YT/9wdYTeb/eFwqqFFPU22H7sd6fz0YwpFR X9vNNokGySq4hJS3zoRAFRAzvuz/y8BoRRFvWluCYDwHuEf3xP1pj/+XlOEhNeVYZMDI UJ+dTI/DvNp0Ky65LxivJr1Y63TcjRmFqbHbEmzRhsIO0Ey8wGcSFNrxFSklHbo9bBdw 00NA== 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=H2/q1ti8dMdaHxoR74dqks/IVoBIPANlV8JICgTNvtE=; fh=2eHqt5uJvOwYPSi+L7ErdhIze+U5YQxjoAwEAjcHn1A=; b=Kn7gANS2TK1zjmK4qR74KvMiC3I3LdS4sh0XHANoXiygUp/zE7hlhfNc3anqW6nOuX muYfD8t5Y8wmLKMeIkGNZXx8QWq4C411ue0isn0Yft209giY1ujKzruJChIE8qeGzNm9 hBZXE9J/pWbntNeGcwp7YIniHsi7xw0dhu4y/GiWfCviScCTBtjYEnjwhJGAJ0eyS5s8 5iRgfOkHfDDmVAHiqSND8XW432JpLQfRRluDYWscVGiCVFMTU8DlHS2DvXL3e1TdfnCY kDPj39GQHLiDwQiv/0nIszatTI9NJAet8FggETYTTccD8ggHNuY4bvVJYgVpJBr5z9Lg pcyw==; 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.20251104.gappssmtp.com; s=20251104; t=1777473853; x=1778078653; 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=H2/q1ti8dMdaHxoR74dqks/IVoBIPANlV8JICgTNvtE=; b=IBWQ8qbBZUQ6y6Np9ClYBAdr8Jrn4RTxox5VUHQsqOdMHxyD0aVbnprRL0bPJ68+qr Y1TP3ylDXEEeBiCMWEQoQfEQmot+RuYg33yBXIpyr5K7CdTU17Rwd3M0Q80bCPxmOhf7 QAVAyyymrtM5KtCLwao+mlzd+xfAku8MaJ2uDgMd5eLP9cQu+cTJdpxtwSCivE/wUv3K HUc/iS1oVOgMv2eyus7u/u32VAqYca5dGrSRPzAPSa/iFw9+o03hewaO7wulpmQ/KiPu YMhTq9oEPLlm6d6WWnLHIeUkph4/DvtPUYiJZY8kqETMuXsk7D6r76D9VQvD56y+bTeu oQlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777473853; x=1778078653; 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=H2/q1ti8dMdaHxoR74dqks/IVoBIPANlV8JICgTNvtE=; b=gbpzZU6A86xCpaTESbBFGGbXCQO8VLdLAh+5VCnSX3SbGsOzTHkHqF6R4ucTmtk2af wyr0BflLvsKtI1Tbn/HIJAsf8WKx34s9O5sKYWWt/Mp/Ok0LhmFDkQ7N8IBhesRc9Xl7 N0ByRRoviKilukGZVm4worb3ljX3g8qjudWQ8TAj/IqxJGN2Ng4vnJUNes/IrI6atrrF 40XD8NGa4AiJEYxoZBqPz5qQ3TAvG1Fb9sQpspLCNcuNvpa61O8yYPg2qx4QutUay8D2 na9wlUEkVmQ0PnwURf17MzdDXI4YfxQwq2ZaZf4ivfnkG1qViAjnjTXCigIwGc5YETKi gZBA== X-Gm-Message-State: AOJu0YzNGpbML0qteWqcr9jK0WurK8HRzOk/bAHHNBhhab5P+JKCuOjJ Dqzg6FWciLQ1GkSe0eQSisKsPGU9rPCtuzFFEtptKJsKqMme26S7T8APScG1Ykt4/LljqJp29HE xkmASB5sgBUelWD2MSzxagIPUmleIQjS6o7VvtR4M8w== X-Gm-Gg: AeBDieuZCkTAw7RMTHWEdc1rm8f1VDQfexFMwZ9qbrm6UlF/XUEfmOJYaibVIHTcPit Z0y+3ofKW3YT+t5wkhkPSJ5PugsVWnaub/JNvVTezUIm1mWML4Ov6dPcGjcADpinmDKn/ifRgkI 63Jz5Z6qN14k/K0r0wU2P8srUBUpEW1iRIuZYpUkiqCXcvedDtexTqeeF8gA7Ln5lRvihMhF1rM Ukr+KU8iy1NlB3GiYnF/5i9tDqZyCblRarxoJnIpIsHz25y6BLoTpqazjue9UCHivJ9AsIzQUbC RpwSNL/JXkoFJFZv1Sh5sIxKdE5TPNwiUujunTweu7KeEtXPbttJ8nSDrdwn3vb4HqRNXta6vb4 = X-Received: by 2002:a05:6000:2502:b0:439:c1ca:82be with SMTP id ffacd0b85a97d-446494ea24amr15376101f8f.28.1777473853422; Wed, 29 Apr 2026 07:44:13 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Peter Geoghegan Date: Wed, 29 Apr 2026 10:43:47 -0400 X-Gm-Features: AVHnY4J50-hgagUo101pxv0n4G05GDGgpaacZxeqhUJYjrrSvIqfTarKpI7Sqpg Message-ID: Subject: Re: Fix size estimation for parallel B-Tree scans with skip arrays To: Siddharth Kothari Cc: pgsql-bugs@lists.postgresql.org, Vaibhav Jain , Madhukar , Xun Cheng 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 Wed, Apr 29, 2026 at 2:54=E2=80=AFAM Siddharth Kothari wrote: > Root cause: > > In src/backend/access/nbtree/nbtree.c, the loop in btestimateparallelscan= assumes that every index column might require a skip array and adds sizeof= (int) to the estimated size: > > However, every skip array actually needs space for its slot in the btps_a= rrElems array AND space to store its scan key's sk_flags. Your diagnosis looks correct to me. As you said, the problem is that we only add btps_arrElems space overhead for input scan keys -- we neglect to do the same for any skip array scan key that might be output by nbtree preprocessing later on. I'll commit this patch later today. Thanks! --=20 Peter Geoghegan