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 1wRzTL-002rpY-0n for pgsql-hackers@arkaria.postgresql.org; Tue, 26 May 2026 21:37:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wRzSI-0061DP-2l for pgsql-hackers@arkaria.postgresql.org; Tue, 26 May 2026 21:36:55 +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 1wRzSI-0061DH-1V for pgsql-hackers@lists.postgresql.org; Tue, 26 May 2026 21:36:55 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wRzSH-00000001aMh-1oDl for pgsql-hackers@postgresql.org; Tue, 26 May 2026 21:36:55 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-bd2d8bb1068so2063686866b.1 for ; Tue, 26 May 2026 14:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1779831411; x=1780436211; darn=postgresql.org; h=in-reply-to:references:mime-version:to:subject:cc:from:message-id :date:from:to:cc:subject:date:message-id:reply-to; bh=YcIaQrrZ1KnnB/ELIjvU+xLHyaHXKcV/9ZW5L4y4ZNQ=; b=I7gjhWLTc6vnoZLd+Rz8szIsMOtax+aSXc3w2NCEm9hu4HwrOqSYLX6u/JwRYYDh5K fS8SUIGqELFpGQUjfTWlC6d6yE+5D24MLUuAOfiACMs1xV/YfGAiXIkyTOzcbVP7V94U UUT+t8Z6G653vMOpQY7SeCDI0dsRq1xaC+meRVXrD/wOA9XzuHeKCH1ejyFNESQ7RV1c 1GQ61ToWOOvVqvoXxXzSLWCOe9zZh+qBha57/EbtnDGFxu6fObCNAaIT7ACI0BB+AayH 9U3BiEcNt0fBdAVG/rFlxTfMkiSdd0G6IV/7JBt5LlA3SwM6q4hENAGAYPeBCwf7gzKC xYTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779831411; x=1780436211; h=in-reply-to:references:mime-version:to:subject:cc:from:message-id :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YcIaQrrZ1KnnB/ELIjvU+xLHyaHXKcV/9ZW5L4y4ZNQ=; b=DoetfXwzQ4zrgh4gLXSxTB4hd7lq6rt3PnUrAnk2ROzVzuSQOZ1Ve+K4KqxRlidUfK O3W8o5KZLgmVQaX4ETQOK+mO31K4BKRTDCbRw4FrAza8oMxmPNgY584jj6eFIb7Bv1Sq bHWMkO29mbRMeS99X/WRwWosWUZOMxaiGKeqwumLlt/bdhTnIdiHNDsPU3to8OtEgr+J 10AU2nEqMVMFau6NSn/pCKSz43FyRAcgaINu3ai7P4YcMTikV2bIUpgEdcNQgVtYTUz9 Z0kbG5bWcvd7MeuHO60WcKXRk3+Sg/aCdRhamorKo7XlPaIhJzswXarwUCwBFiTIIsqT SL1w== X-Gm-Message-State: AOJu0Yw7ccVPidpNgd7RpahXTAsax+ohn6zJha0h5VuBi6SahEHVVW5i mUp5uNBa8mvYWZlfFi1zERl4tpYBfOXKc9BKEBbf/yqxwu9KtCz6ptrCMN93Zf9GgwA= X-Gm-Gg: Acq92OFZERzJx3lIF2+nKTwLb6ASO1e5H53mdqozTmiJiE9bFa/B9pnSDNRssw7YhUw 6y21tDJgj35/ZGq902t1sIpywMF1DpM+1ljQUWK6jVOznukwJ9JVedlbJ7E14ug82AEWjqY2ltx lpKQhW2Lz+i2mzO6IrI35bMUOjHoxP/HXqEDBlY3T0lvZkYX/k/rChLhLW3Narf2W9jdtOce36e BUc8/aFnBWfHJuVRrQ/YND9MC68fkjkvRo5YSqIRD2VM4t9dBZuX0Uda6WUrdg52QTLYBtJuBe8 YU/8wgctlc768J+CGhSLDfay3lJwEV2PJ53m9VV+94DNT0LRgQGcaZQZg8MPDN39d2kGAoOsOlN NnFrW1UZERCQDThroUgf61PR+ht8oNdBOq9YrUaWueKPXollXM6a25XkHuzBjTdswVn/4lMFtvO hdtoM0WmJYZMiROPYC5CBi9PDJPDog5bF1D8R36cvOYZFR1erkzCuY+K3fdVE= X-Received: by 2002:a17:907:cf8c:b0:bd4:8bb6:3d52 with SMTP id a640c23a62f3a-bdd279d1b3cmr790755466b.36.1779831410987; Tue, 26 May 2026 14:36:50 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bddc5eca160sm533588466b.32.2026.05.26.14.36.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 26 May 2026 14:36:49 -0700 (PDT) Content-Type: multipart/mixed; boundary=5c6a7f8f5d501353628d5297027827814c5ef130dca27b12d7002ab8e7f4 Date: Tue, 26 May 2026 23:36:49 +0200 Message-Id: From: "Jelte Fennema-Nio" Cc: "PostgreSQL-development" Subject: Re: future of PQfn() To: "Nathan Bossart" MIME-Version: 1.0 References: In-Reply-To: X-TUID: 8JwPxMJgQ8IY List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --5c6a7f8f5d501353628d5297027827814c5ef130dca27b12d7002ab8e7f4 Content-Type: multipart/alternative; boundary=b38d61bafddd2af8311f5ca9afc5b2d20aa87198c8ee937420b9a5930179 --b38d61bafddd2af8311f5ca9afc5b2d20aa87198c8ee937420b9a5930179 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue, 26 May 2026 at 18:05, Nathan Bossart =20 wrote: > Another approach we > could take is to just send the query via PQexecParams(), but a simple tes= t > (creating and unlinking 10K LOs) showed a ~41% slowdown compared to HEAD. > So, I guess we'll need to keep PQnfn() around for now... > > Thoughts? I had a small WIP patch (fully AI generated and not yet vetted by me) lying around for unrelated reasons to make the extended protocol perform closer to the simple protocol with pgbench --select-only by using CreateOneShotCachedPlan to create the plan for unnamed prepared statements (see attached). Could you share the simple LO test you were running here and/or rerun it with this patch applied? I'd love to know if the patch reduces the slowdown significantly, or if something else is the bottleneck. --b38d61bafddd2af8311f5ca9afc5b2d20aa87198c8ee937420b9a5930179-- --5c6a7f8f5d501353628d5297027827814c5ef130dca27b12d7002ab8e7f4 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Speed-up-extended-protocol-by-using-oneshot-cache.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0001-Speed-up-extended-protocol-by-using-oneshot-cache.patch RnJvbSAzNTg2ZGViOGJiY2MyNWFjMGM0ZGU1YzdlZjY0MjFmZmRkYzkzODM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDI2IE1heSAyMDI2IDE2OjA3OjU3ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MV0gU3BlZWQgdXAgZXh0ZW5kZWQgcHJvdG9jb2wgYnkgdXNpbmcgb25lc2hvdCBjYWNoZWQgcGxh bgoKRElTQ0xBSU1FUjogRnVsbHkgd3JpdHRlbiBieSBBSS4gSSBzdGlsbCBuZWVkIHRvIGNoZWNr IGlmIHRoZSBjb2RlIGlzCmZ1bGx5IGNvcnJlY3QuIFRoZSBhcHByb2FjaCBzZWVtcyBzZW5zaWJs ZSB0aG91Z2gsIGFuZCBtZXNvbiB0ZXN0CnBhc3NlcyBvbiBteSBtYWNoaW5lLgoKT24gbXkgbGFw dG9wIG9uIG1hc3RlciBJIGdldCBtdWNoIGxvd2VyIHBlcmYgd2l0aCB0aGUgZXh0ZW5kZWQgcHJv dG9jb2wKdGhhbiB0aGUgc2ltcGxlIHByb3RvY29sIGluIGEgYmFzaWMgcGdiZW5jaCAtLXNlbGVj dC1vbmx5IHRlc3Q6CgpwZ2JlbmNoIC1pCnBnYmVuY2ggLS1zZWxlY3Qtb25seSAtVCAxMCAtLXBy b3RvY29sIHNpbXBsZQpwZ2JlbmNoIC0tc2VsZWN0LW9ubHkgLVQgMTAgLS1wcm90b2NvbCBleHRl bmRlZAoKRm9yIHNpbXBsZSBJIGdldCB+NTZrIFRQUyBhbmQgZm9yIGV4dGVuZGVkIEkgb25seSBn ZXQgfjQ5ayBUUFMKCldpdGggdGhpcyBjaGFuZ2UgSSBnZXQgfjUzayBUUFMgd2l0aCBleHRlbmRl ZCBzbyBhIH44JSBpbXByb3ZlbWVudC4KLS0tCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMg fCA1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNTAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXgg ZGJlZjczNGE5M2YuLjNhYjlkN2FiM2IyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNTEzLDEwICsx NTEzLDI3IEBAIGV4ZWNfcGFyc2VfbWVzc2FnZShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCS8q IHN0cmluZyB0byBleGVjdXRlICovCiAKIAkJLyoKIAkJICogQ3JlYXRlIHRoZSBDYWNoZWRQbGFu U291cmNlIGJlZm9yZSB3ZSBkbyBwYXJzZSBhbmFseXNpcywgc2luY2UgaXQKLQkJICogbmVlZHMg dG8gc2VlIHRoZSB1bm1vZGlmaWVkIHJhdyBwYXJzZSB0cmVlLgorCQkgKiBuZWVkcyB0byBzZWUg dGhlIHVubW9kaWZpZWQgcmF3IHBhcnNlIHRyZWUuICBGb3IgdW5uYW1lZCBzdGF0ZW1lbnRzCisJ CSAqIHVzZSBhIG9uZS1zaG90IHBsYW46IHRoaXMgc2tpcHMgdGhlIGRlZXAgY29weSBvZiB0aGUg cmF3IHBhcnNlCisJCSAqIHRyZWUsIHRoZSBkZWVwIGNvcHkgb2YgdGhlIHJld3JpdHRlbiBxdWVy eSB0cmVlIGluIEJ1aWxkQ2FjaGVkUGxhbiwKKwkJICogYW5kIHRoZSBTYXZlQ2FjaGVkUGxhbiBy ZXBhcmVudCBpbnRvIENhY2hlTWVtb3J5Q29udGV4dC4gIFRoZQorCQkgKiB0cmFkZS1vZmYgaXMg bm8gaW52YWxpZGF0aW9uIHN1cHBvcnQsIHdoaWNoIGlzIGFjY2VwdGFibGUgZm9yIHRoZQorCQkg KiBjb21tb24gY2FzZSB3aGVyZSB0aGUgdW5uYW1lZCBzdGF0ZW1lbnQgaXMgUGFyc2UrQmluZCtF eGVjdXRlJ2QgaW4KKwkJICogYSBzaW5nbGUgdHJhbnNhY3Rpb24uCiAJCSAqLwotCQlwc3JjID0g Q3JlYXRlQ2FjaGVkUGxhbihyYXdfcGFyc2VfdHJlZSwgcXVlcnlfc3RyaW5nLAotCQkJCQkJCQlD cmVhdGVDb21tYW5kVGFnKHJhd19wYXJzZV90cmVlLT5zdG10KSk7CisJCWlmIChpc19uYW1lZCkK KwkJCXBzcmMgPSBDcmVhdGVDYWNoZWRQbGFuKHJhd19wYXJzZV90cmVlLCBxdWVyeV9zdHJpbmcs CisJCQkJCQkJCQlDcmVhdGVDb21tYW5kVGFnKHJhd19wYXJzZV90cmVlLT5zdG10KSk7CisJCWVs c2UKKwkJeworCQkJLyoKKwkJCSAqIENyZWF0ZU9uZVNob3RDYWNoZWRQbGFuIGRvZXNuJ3QgY29w eSBxdWVyeV9zdHJpbmcsIHNvIHdlIG11c3QKKwkJCSAqIHN0YXNoIGl0IGluIHVubmFtZWRfc3Rt dF9jb250ZXh0IChDdXJyZW50TWVtb3J5Q29udGV4dCkgc28gaXQKKwkJCSAqIG91dGxpdmVzIHRo ZSBNZXNzYWdlQ29udGV4dCByZXNldCBiZXR3ZWVuIFBhcnNlIGFuZCBCaW5kLgorCQkJICovCisJ CQlwc3JjID0gQ3JlYXRlT25lU2hvdENhY2hlZFBsYW4ocmF3X3BhcnNlX3RyZWUsIHBzdHJkdXAo cXVlcnlfc3RyaW5nKSwKKwkJCQkJCQkJCQkgICBDcmVhdGVDb21tYW5kVGFnKHJhd19wYXJzZV90 cmVlLT5zdG10KSk7CisJCX0KIAogCQkvKgogCQkgKiBTZXQgdXAgYSBzbmFwc2hvdCBpZiBwYXJz ZSBhbmFseXNpcyB3aWxsIG5lZWQgb25lLgpAQCAtMTU0Niw4ICsxNTYzLDEyIEBAIGV4ZWNfcGFy c2VfbWVzc2FnZShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCS8qIHN0cmluZyB0byBleGVjdXRl ICovCiAJewogCQkvKiBFbXB0eSBpbnB1dCBzdHJpbmcuICBUaGlzIGlzIGxlZ2FsLiAqLwogCQly YXdfcGFyc2VfdHJlZSA9IE5VTEw7Ci0JCXBzcmMgPSBDcmVhdGVDYWNoZWRQbGFuKHJhd19wYXJz ZV90cmVlLCBxdWVyeV9zdHJpbmcsCi0JCQkJCQkJCUNNRFRBR19VTktOT1dOKTsKKwkJaWYgKGlz X25hbWVkKQorCQkJcHNyYyA9IENyZWF0ZUNhY2hlZFBsYW4ocmF3X3BhcnNlX3RyZWUsIHF1ZXJ5 X3N0cmluZywKKwkJCQkJCQkJCUNNRFRBR19VTktOT1dOKTsKKwkJZWxzZQorCQkJcHNyYyA9IENy ZWF0ZU9uZVNob3RDYWNoZWRQbGFuKHJhd19wYXJzZV90cmVlLCBwc3RyZHVwKHF1ZXJ5X3N0cmlu ZyksCisJCQkJCQkJCQkJICAgQ01EVEFHX1VOS05PV04pOwogCQlxdWVyeXRyZWVfbGlzdCA9IE5J TDsKIAl9CiAKQEAgLTE1ODQsOSArMTYwNSwxMyBAQCBleGVjX3BhcnNlX21lc3NhZ2UoY29uc3Qg Y2hhciAqcXVlcnlfc3RyaW5nLAkvKiBzdHJpbmcgdG8gZXhlY3V0ZSAqLwogCWVsc2UKIAl7CiAJ CS8qCi0JCSAqIFdlIGp1c3Qgc2F2ZSB0aGUgQ2FjaGVkUGxhblNvdXJjZSBpbnRvIHVubmFtZWRf c3RtdF9wc3JjLgorCQkgKiBGb3IgdW5uYW1lZCBzdGF0ZW1lbnRzIHdlIHVzZSBhIG9uZS1zaG90 IENhY2hlZFBsYW5Tb3VyY2UsIHNvIHdlCisJCSAqIGNhbid0IFNhdmVDYWNoZWRQbGFuIGl0LiAg SW5zdGVhZCByZXBhcmVudCBpdHMgY29udGV4dCAod2hpY2ggaXMKKwkJICogdW5uYW1lZF9zdG10 X2NvbnRleHQpIHVuZGVyIENhY2hlTWVtb3J5Q29udGV4dCBzbyB0aGF0IGl0IHN1cnZpdmVzCisJ CSAqIHRoZSBNZXNzYWdlQ29udGV4dCByZXNldCBiZXR3ZWVuIFBhcnNlIGFuZCB0aGUgZm9sbG93 aW5nIEJpbmQuCisJCSAqIGRyb3BfdW5uYW1lZF9zdG10KCkgd2lsbCBNZW1vcnlDb250ZXh0RGVs ZXRlIGl0IGV4cGxpY2l0bHkuCiAJCSAqLwotCQlTYXZlQ2FjaGVkUGxhbihwc3JjKTsKKwkJTWVt b3J5Q29udGV4dFNldFBhcmVudChwc3JjLT5jb250ZXh0LCBDYWNoZU1lbW9yeUNvbnRleHQpOwog CQl1bm5hbWVkX3N0bXRfcHNyYyA9IHBzcmM7CiAJfQogCkBAIC0yMDI4LDggKzIwNTMsMTggQEAg ZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCSAqIE9idGFpbiBh IHBsYW4gZnJvbSB0aGUgQ2FjaGVkUGxhblNvdXJjZS4gIEFueSBjcnVmdCBmcm9tIChyZSlwbGFu bmluZwogCSAqIHdpbGwgYmUgZ2VuZXJhdGVkIGluIE1lc3NhZ2VDb250ZXh0LiAgVGhlIHBsYW4g cmVmY291bnQgd2lsbCBiZQogCSAqIGFzc2lnbmVkIHRvIHRoZSBQb3J0YWwsIHNvIGl0IHdpbGwg YmUgcmVsZWFzZWQgYXQgcG9ydGFsIGRlc3RydWN0aW9uLgorCSAqCisJICogRm9yIG9uZS1zaG90 IHBsYW5zICh1c2VkIGZvciB1bm5hbWVkIHByZXBhcmVkIHN0YXRlbWVudHMpLAorCSAqIEJ1aWxk Q2FjaGVkUGxhbiBkb2VzIG5vdCBhbGxvY2F0ZSBhIGRlZGljYXRlZCBwbGFuX2NvbnRleHQ7IHRo ZSBwbGFuCisJICogZW5kcyB1cCBpbiBDdXJyZW50TWVtb3J5Q29udGV4dC4gIFN3aXRjaCB0byB0 aGUgcG9ydGFsJ3MgY29udGV4dCBmb3IKKwkgKiB0aGUgY2FsbCBzbyB0aGUgcGxhbiBzdXJ2aXZl cyBNZXNzYWdlQ29udGV4dCByZXNldHMgYmV0d2VlbiBCaW5kIGFuZAorCSAqIEV4ZWN1dGUgKGUu Zy4gaW4gcGlwZWxpbmVkIGV4dGVuZGVkLXByb3RvY29sIHRyYWZmaWMpLgogCSAqLworCWlmIChw c3JjLT5pc19vbmVzaG90KQorCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ocG9ydGFsLT5wb3J0YWxD b250ZXh0KTsKIAljcGxhbiA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxM KTsKKwlpZiAocHNyYy0+aXNfb25lc2hvdCkKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKE1lc3Nh Z2VDb250ZXh0KTsKIAogCS8qCiAJICogTm93IHdlIGNhbiBkZWZpbmUgdGhlIHBvcnRhbC4KQEAg LTI5MDYsOCArMjk0MSwxNiBAQCBkcm9wX3VubmFtZWRfc3RtdCh2b2lkKQogCXsKIAkJQ2FjaGVk UGxhblNvdXJjZSAqcHNyYyA9IHVubmFtZWRfc3RtdF9wc3JjOwogCisJCS8qCisJCSAqIEZvciBv bmUtc2hvdCBwbGFucyBEcm9wQ2FjaGVkUGxhbiBkb2VzIG5vdCBmcmVlIHRoZSBjb250ZXh0IChp dCdzCisJCSAqIG93bmVkIGJ5IHRoZSBjYWxsZXIpLCBzbyBjYXB0dXJlIGl0IGFuZCBkZWxldGUg aXQgb3Vyc2VsdmVzLgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dCBvbmVzaG90X2N0eCA9IHBzcmMt PmlzX29uZXNob3QgPyBwc3JjLT5jb250ZXh0IDogTlVMTDsKKwogCQl1bm5hbWVkX3N0bXRfcHNy YyA9IE5VTEw7CiAJCURyb3BDYWNoZWRQbGFuKHBzcmMpOworCQlpZiAob25lc2hvdF9jdHgpCisJ CQlNZW1vcnlDb250ZXh0RGVsZXRlKG9uZXNob3RfY3R4KTsKIAl9CiB9CiAKCmJhc2UtY29tbWl0 OiA2YWEyNmJlMjg4ZmE4MTEyNzBkZmMxZTM5YzAxNWMyM2E5NzY4OGI0Ci0tIAoyLjU0LjAKCg== --5c6a7f8f5d501353628d5297027827814c5ef130dca27b12d7002ab8e7f4--