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 1w53jv-002qvm-2b for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 15:32:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w53ju-007WUx-0x for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 15:32:18 +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.96) (envelope-from ) id 1w53jt-007WUn-3C for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 15:32:18 +0000 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w53jq-00000000tmG-3u8n for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 15:32:18 +0000 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-486fd5360d4so16074565e9.1 for ; Tue, 24 Mar 2026 08:32:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774366334; cv=none; d=google.com; s=arc-20240605; b=Tf8oxWxIVrrTkEiHN2/frmKTCRTkQxnBktTpvIs+OGoaWGZireiAKcsVqOYkAOvOEd MSJCfrGpfvnPJT46nsfF/W7RR7Cq0oTTUABxKqFBjzK6DcAyKUsibNRIO+RDqKpZmo6W WzpeKfobWnhGVkqEfCYN7PEGycjMCAD84FKG8w23BJGmdR61Ct8ivQJUVVh/Bku+dhTL KoBLAifxrIGusINBGgdehlzw/qd+9q0HNeE5qVQKanJzjMQrWs9rwV1UcyvjukgW1Lpu cwEkMGUNk4KNryGhrT6IoP3NkGZw32U6Jg9ru9LVnYU+c0L8UC1p8qCYBhVHXw3svWdT Tl+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=1B4qVwu5zNqX3DT8efmcv9ImdBy7AX+vb0+LhAGgtJc=; fh=TPvDasIBb7QHNsqzAR0Pv/ItlOlN/i14vbf6f600PHQ=; b=cuh2wlMu2gGwP51yAtf0H01GMNOPNGo39xc6siqJOKJuRkPl8nLfvkbcehsC6y2Ghi YO1dq+jkaScG/SzRmDaMU2e9RbkvTFFPBGDg5eJheFzKrolEYhV/g0RWUevMne+yygS9 upaGvkdJyLhpnnAVZqjCBKXG0EnDSTfz5TOBTYJ++ZMFwUC2lRdTnTl2VXe0v38ixgTp pll02VQCrLHIwtueHLUfsAUWeknH88ZODMMlCk3BnwqENvdEt5yWuhTU5XkO/FfI2qLz kbdkRpOd03O29a6gmIQv+Q+B97r5C5PPYeLon7uakj7h6lVg4r5L0fDbEjSNsxX6tWUo PdFw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774366334; x=1774971134; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1B4qVwu5zNqX3DT8efmcv9ImdBy7AX+vb0+LhAGgtJc=; b=sjbVsT2sTguaD8qfhtQKiQKZpKURMiKtUJPyDaNg3d6DwVET7MR2V9r0B/rveJBmgf 0QvBD9qTtVarVDnkFBqauoRu3PF4OQcuAvkq+JdaERfCigeZ6nMJKQ+3kBPeKfRjewdi Pku3jdGHP+EGJhTuF0J7kyNa9Dci8Eggod51aS3Ai5sjl19upDglDQmLI9m4gCigV2Hj EYbap6PDuNUSmxLdsyrsLlhKQ1WZJgAwTev9+acZByN0qL5Uiio3krkLVBgm75wO+pde bRxV0GcTeea8Bg1BXsUXZfO+t/AB6kHykiJeqoT5Xn5cZnZVLAx9dQ2JzlTj/3NzTWz0 xPrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774366334; x=1774971134; h=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=1B4qVwu5zNqX3DT8efmcv9ImdBy7AX+vb0+LhAGgtJc=; b=H02vZU9hcMnqMxNFaH1ow1xkt3GHBR3EaQRu+6/YAOSEMEt/W6qFbYNlGEPjsoY1SE y+BBcdWEnCqGgv4Q29olEMRkB8ngGlZ8V6kYCHs9xxMCmjoVJqdBccC2MpSwkvMkhELv QYtlXr8Mcjdv+Hnoaqqbbyy0kgKl0VdCuIKoRtOes0f+/R8er9HDaNWP5cYLOwScz7Dk zDFV4XMl+BKQP/3mx2CNNavR/Sw/5vorVNExtwTxq4A+u/YTG04O/InNUzlcLbSPiL2u Hi1jKjg9ieVr8A4nWzmTYu8erF1UNi2IurnoMf8h8d+k7tqMYZgUe3ASvwshzlo9ya/7 j19A== X-Forwarded-Encrypted: i=1; AJvYcCWc5b6d7Lm+ecwzUER7TdYHh4oMWX3zoSDmLGXQNrvWZDhicYguvhTKNOfVw5Dbhw+eOlpEaOc3J3QYzhj4@postgresql.org X-Gm-Message-State: AOJu0YxuCtZHn1ynmH+rUNCbEfhyvuXzgsTPkBo/CRYdpFBOm0B4NXun 7d+i7k5Of5POZte9aXaXFGNDUsSzUrwMyWP/NLoTUYc/9+iDFY6GaisoyBKQC/aRnyAVLoyufag MUfk8uu+9b0dYpxpwTxs7HVAipZW7fQQ= X-Gm-Gg: ATEYQzw9fKe9Az4EwcdsI0aON/MmP6Vlzgmh6mavKmwGIn5ZS5NmtlsCslZl3TwrOjL v7kooH30UXbVDp3+Ku0rNZYniVMwkscCcJJep0Oagawkc2wnQxxmIq0GDTVUY02Xaok1C44W+Vl JEem/sHTZ4t2TNlKTj5unYYxNdFddkpgXYYkd/D+8/YqObchMT106+jlj9j9jsFlOXCSro21ecd SQ2fzNd8iBY6v4m7cT6avYWsyEb948rF9fpiymPMJryNN3Qs8UIIoTTfgNzaMpWCYBWDWRYL1RE Z0oyyGuQ6y/Rp0/P2APIpEmjVS2109Ft4GRhY5pJ+nMxn/Zkhy+G X-Received: by 2002:a05:600c:4705:b0:485:a4de:f4f9 with SMTP id 5b1f17b1804b1-4871608406dmr2834845e9.27.1774366333920; Tue, 24 Mar 2026 08:32:13 -0700 (PDT) MIME-Version: 1.0 References: <26c766d6-db0f-43d3-a618-44f8d40a3121@iki.fi> <62b8dc23-8f6a-4cac-91ff-f74bb5bc159a@iki.fi> <8a6799be-bd42-49fb-8914-856c97bb1977@iki.fi> <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> In-Reply-To: <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> From: Ashutosh Bapat Date: Tue, 24 Mar 2026 21:02:00 +0530 X-Gm-Features: AQROBzCwsNv6ZrazPCZJoBTcZWj3Fcg6-zl5vpD76sLnj7hOOFQCpy7ss7PGsDQ Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Heikki Linnakangas Cc: Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="000000000000098aaa064dc6db70" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000098aaa064dc6db70 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Mar 22, 2026 at 5:44=E2=80=AFAM Heikki Linnakangas wrote: > > > I split this into more incremental patches. The first few are just > refactorings that are probably useful on their own. Here are some comments on the patches 0001 + +# Enable pg_stat_statements to test restart of shared_preload_libraries. +$node->append_conf( + 'postgresql.conf', + qq{shared_preload_libraries =3D 'pg_stat_statements' +pg_stat_statements.max =3D 50000 +compute_query_id =3D 'regress' +}); + In order to make sure that the shared memory and LWLocks for pg_stat_statements are initialized after crash restart, we need to at least query pg_stat_statements after the restart or do something so that it's shared memory is used. Also, we can check whether the shared memory structures are created by querying pg_shmem_allocations after the restart. 0002 void InitShmemAllocator(PGShmemHeader *seghdr) { The new ShmemIndex initialization code is cleaner and more straightforward. It avoids the recursive nature of ShmemInitHash. However with this change it's hard to keep track of all the initialization steps and their dependencies. Attached is a patch that makes small adjustments to the code to make it more clear. Use of variable hash_size is actually misleading since it's not the size of the hash table but the expected/max number of entries in it. Removing it makes code more readable. 0003, 0005, 0006 is straight forward, no comments. Usually these patches make the code more readable. I will review it more when I see the patches that use this refactoring. 0004 I traced back the placement of CreateLWLock in history. It feels like the patch is moving it to its intended place since the function was introduced. It needs a comment to explain why the function is not called from CreateOrAttachShmemStructs where other in-memory structures are allocated. 0007 without using new APIs is not necessarily a win. So I would suggest committing it along with the refactoring patch. If we are going to commit these patches separately, I would suggest squashing all predicate.c patches into one commit. I will continue from 0008 tomorrow. --=20 Best Wishes, Ashutosh Bapat --000000000000098aaa064dc6db70 Content-Type: application/octet-stream; name="0002_adjustments.patch.no_cibot" Content-Disposition: attachment; filename="0002_adjustments.patch.no_cibot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn4f3pxv0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IGRjZTM1NWU2NjgzLi43YTlkNWM2MTk4YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC0xMjUsMTEgKzEyNSwxNCBAQCB2b2lkCiBJbml0U2ht ZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRyKQogewogCVNpemUJCW9mZnNldDsKLQlp bnQ2NAkJaGFzaF9zaXplOwogCUhBU0hDVEwJCWluZm87CiAJaW50CQkJaGFzaF9mbGFnczsKIAlz aXplX3QJCXNpemU7CiAKKyNpZm5kZWYgRVhFQ19CQUNLRU5ECisJQXNzZXJ0KCFJc1VuZGVyUG9z dG1hc3Rlcik7CisjZW5kaWYKKwogCUFzc2VydChzZWdoZHIgIT0gTlVMTCk7CiAKIAkvKgpAQCAt MTM5LDEwICsxNDIsNiBAQCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRy KQogCUFzc2VydChzZWdoZHIgPT0gKHZvaWQgKikgTUFYQUxJR04oc2VnaGRyKSk7CiAJQXNzZXJ0 KHNlZ2hkci0+Y29udGVudF9vZmZzZXQgPT0gTUFYQUxJR04oc2VnaGRyLT5jb250ZW50X29mZnNl dCkpOwogCi0JU2htZW1TZWdIZHIgPSBzZWdoZHI7Ci0JU2htZW1CYXNlID0gc2VnaGRyOwotCVNo bWVtRW5kID0gKGNoYXIgKikgU2htZW1CYXNlICsgc2VnaGRyLT50b3RhbHNpemU7Ci0KIAkvKgog CSAqIEFsbG9jYXRpb25zIGFmdGVyIHRoaXMgcG9pbnQgc2hvdWxkIGdvIHRocm91Z2ggU2htZW1B bGxvYywgd2hpY2gKIAkgKiBleHBlY3RzIHRvIGFsbG9jYXRlIGV2ZXJ5dGhpbmcgb24gY2FjaGUg bGluZSBib3VuZGFyaWVzLiAgTWFrZSBzdXJlIHRoZQpAQCAtMTU1LDE4ICsxNTQsMjUgQEAgSW5p dFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcikKIAkJCQkgZXJybXNnKCJvdXQg b2Ygc2hhcmVkIG1lbW9yeSAoJXp1IGJ5dGVzIHJlcXVlc3RlZCkiLAogCQkJCQkJb2Zmc2V0KSkp OwogCisJLyoKKwkgKiBJbiBwb3N0bWFzdGVyIG9yIHN0YW5kLWFsb25lIGJhY2tlbmQsIGluaXRp YWxpemUgdGhlIHNoYXJlZCBtZW1vcnkKKwkgKiBhbGxvY2F0b3IgYW5kIHRoZSBzcGlubG9jayBz byB0aGF0IHdlIGNhbiBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5IGZvcgorCSAqIFNobWVtSW5kZXgg dXNpbmcgU2htZW1BbGxvYygpLiBJbiBhIHJlZ3VsYXIgYmFja2VuZCBqdXN0IHNldCB1cCB0aGUK KwkgKiBwb2ludGVycyByZXF1aXJlZCBieSBTaG1lbUFsbG9jKCkuCisJICovCiAJU2htZW1BbGxv Y2F0b3IgPSAoU2htZW1BbGxvY2F0b3JEYXRhICopICgoY2hhciAqKSBzZWdoZHIgKyBzZWdoZHIt PmNvbnRlbnRfb2Zmc2V0KTsKLQlTaG1lbUxvY2sgPSAmU2htZW1BbGxvY2F0b3ItPnNobWVtX2xv Y2s7CiAKLSNpZm5kZWYgRVhFQ19CQUNLRU5ECi0JQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rlcik7 Ci0jZW5kaWYKIAlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQogCXsKIAkJU3BpbkxvY2tJbml0KCZT aG1lbUFsbG9jYXRvci0+c2htZW1fbG9jayk7CiAJCVNobWVtQWxsb2NhdG9yLT5mcmVlX29mZnNl dCA9IG9mZnNldDsKIAl9CiAKKwlTaG1lbUxvY2sgPSAmU2htZW1BbGxvY2F0b3ItPnNobWVtX2xv Y2s7CisJU2htZW1TZWdIZHIgPSBzZWdoZHI7CisJU2htZW1CYXNlID0gc2VnaGRyOworCVNobWVt RW5kID0gKGNoYXIgKikgU2htZW1CYXNlICsgc2VnaGRyLT50b3RhbHNpemU7CisKIAkvKgogCSAq IENyZWF0ZSAob3IgYXR0YWNoIHRvKSB0aGUgc2hhcmVkIG1lbW9yeSBpbmRleCBvZiBzaG1lbSBh cmVhcy4KIAkgKgpAQCAtMTc0LDExICsxODAsOSBAQCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1l bUhlYWRlciAqc2VnaGRyKQogCSAqIHVzZSBTaG1lbUluaXRIYXNoKCkgaGVyZSBiZWNhdXNlIGl0 IHJlbGllcyBvbiBTaG1lbUluZGV4IGJlaW5nIGFscmVhZHkKIAkgKiBpbml0aWFsaXplZC4KIAkg Ki8KLQloYXNoX3NpemUgPSBTSE1FTV9JTkRFWF9TSVpFOwotCiAJaW5mby5rZXlzaXplID0gU0hN RU1fSU5ERVhfS0VZU0laRTsKIAlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTaG1lbUluZGV4RW50 KTsKLQlpbmZvLmRzaXplID0gaW5mby5tYXhfZHNpemUgPSBoYXNoX3NlbGVjdF9kaXJzaXplKGhh c2hfc2l6ZSk7CisJaW5mby5kc2l6ZSA9IGluZm8ubWF4X2RzaXplID0gaGFzaF9zZWxlY3RfZGly c2l6ZShTSE1FTV9JTkRFWF9TSVpFKTsKIAlpbmZvLmFsbG9jID0gU2htZW1BbGxvY05vRXJyb3I7 CiAJaGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfU0hBUkVEX01F TSB8IEhBU0hfQUxMT0MgfCBIQVNIX0RJUlNJWkU7CiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikK QEAgLTE4OSw3ICsxOTMsNyBAQCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2Vn aGRyKQogCWVsc2UKIAkJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKIAlpbmZvLmhjdGwgPSBT aG1lbUFsbG9jYXRvci0+aW5kZXg7Ci0JU2htZW1JbmRleCA9IGhhc2hfY3JlYXRlKCJTaG1lbUlu ZGV4IiwgaGFzaF9zaXplLCAmaW5mbywgaGFzaF9mbGFncyk7CisJU2htZW1JbmRleCA9IGhhc2hf Y3JlYXRlKCJTaG1lbUluZGV4IiwgU0hNRU1fSU5ERVhfU0laRSwgJmluZm8sIGhhc2hfZmxhZ3Mp OwogCUFzc2VydChTaG1lbUluZGV4ICE9IE5VTEwpOwogfQogCg== --000000000000098aaa064dc6db70--