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 1vkZr7-00HDIu-1b for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 03:35:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkZr4-00BpyY-2b for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 03:35:03 +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 1vkZr4-00BpyP-0k for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 03:35:02 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vkZr0-002V2B-1m for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 03:35:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1769484895; bh=4/642GGlCG7fWAyIEj9OffyvDZfc/3IWGSPjSlD4baw=; h=Message-ID:Date:User-Agent:From:Subject:To:From; b=iiXeGAR2luU4FkwHlKc6ebZ2VJpDMZGVtEi1YIuxFL+b19Itw2/H3Gy4Lux7t0Qdl eAqYVPF74DvEO6IKiaV82AgLbf7klZS5AA39XEVVEJ1+aMjIfGKEeYdgze2Fv5+N38 BfpJnYV/2VGCPgDoGf1BY74D1xGS0mcIZKt6rMl5KBd6k15UZScJcKVZC0paqqKSug VpHJBdgu7w9n4uIzyPaazu/n3pnKEGeQHpTC7qsV9s1gPD/r0P0cN8BFNbMWhLNgP/ pLKTch6REYdlxKqzm/MEN2JpHc2goI5cT23T+s0Ke9rOhiq8vxz6HHCj5dT7DANG0r zzJYD1NclYBfA== Received: from [192.168.182.64] (unknown [176.59.146.233]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.bondar@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id A358460382 for ; Tue, 27 Jan 2026 06:34:54 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------0tE9WW0w60uS7QFRjkD4luSd" Message-ID: <2da56b59-acb6-4ee3-af6b-6e800115dc7f@postgrespro.ru> Date: Tue, 27 Jan 2026 10:34:51 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Dmitrii Bondar Subject: Pgbench: remove synchronous prepare To: pgsql-hackers@lists.postgresql.org Content-Language: en-US X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2026/01/27 00:08:00 #28154734 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------0tE9WW0w60uS7QFRjkD4luSd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, Hackers! I was testing a connection pooler with pgbench and pgbench froze. I checked the traffic and noticed that pgbench just blocks the execution while it is waiting the response to the prepare command. To reproduce the problem, it is enough to run pgbouncer with the session pooling mode and use more clients than the pool size. With the pool size of 20: pgbench -h localhost -p 6432 --client=21 --jobs=1 -S -T 1000 -P 1 postgres --protocol=prepared Pgbench with the extended protocol flag does not have this issue because pgbench sends the whole parse/bind/execute/sync packet sequence at once and waits for the result asynchronously. I suggest implementing this behavior for the prepared protocol too. I attached the pgbouncer configuration to reproduce the issue and the proposed fix. I prefer to add a new function to libpqfe instead of changing the existing behavior or adding a new state to pgbench. Although it is largely duplicated code, it looks to be as non-invasive as possible. Implementation and naming need to be discussed. Tests for pgbench passed. I made small changes to the expected output. Regards, Dmitrii Bondar. --------------0tE9WW0w60uS7QFRjkD4luSd Content-Type: text/plain; charset=UTF-8; name="pgbouncer.ini" Content-Disposition: attachment; filename="pgbouncer.ini" Content-Transfer-Encoding: base64 W2RhdGFiYXNlc10KKiA9IGhvc3Q9MTI3LjAuMC4xIHBvcnQ9NTQzMgoKW3BnYm91bmNlcl0K bGlzdGVuX2FkZHIgPSAxMjcuMC4wLjEKbGlzdGVuX3BvcnQgPSA2NDMyCmxvZ2ZpbGUgPSAu L3BnYm91bmNlci5sb2cKcGlkZmlsZSA9IC4vcGdib3VuY2VyLnBpZAphZG1pbl91c2VycyA9 IHBvc3RncmVzCmF1dGhfdHlwZSA9IHRydXN0CmF1dGhfZmlsZSA9IC4vdXNlcmxpc3QudHh0 CnBvb2xfbW9kZT1zZXNzaW9uCg== --------------0tE9WW0w60uS7QFRjkD4luSd Content-Type: text/plain; charset=UTF-8; name="userlist.txt" Content-Disposition: attachment; filename="userlist.txt" Content-Transfer-Encoding: base64 InBvc3RncmVzIiAiIgoicmVncmVzc191c2VyIiAiIgoidGVzdCIgIiIKInBvc3RncmVzIiAi Igo= --------------0tE9WW0w60uS7QFRjkD4luSd Content-Type: text/x-patch; charset=UTF-8; name="0001-Remove-synchronous-prepare-from-pgbench.patch" Content-Disposition: attachment; filename="0001-Remove-synchronous-prepare-from-pgbench.patch" Content-Transfer-Encoding: base64 RnJvbSAxZWFlZDdkYzk0MzU5MzE1YzgwZjhhMzhlNGIyYjE1OGNlY2YxYjA2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEbWl0cmlpIEJvbmRhciA8ZC5ib25kYXJAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMjcgSmFuIDIwMjYgMDg6Mjk6NDYgKzA3MDAKU3ViamVj dDogW1BBVENIXSBSZW1vdmUgc3luY2hyb25vdXMgcHJlcGFyZSBmcm9tIHBnYmVuY2gKClBn YmVuY2ggd2FpdHMgZm9yIHRoZSByZXN1bHQgb2YgYSBwcmVwYXJlIHBhY2tldCBzeW5jaHJv bm91c2x5CndoZW4gdGhlIHByZXBhcmVkIHByb3RvY29sIGZsYWcgaXMgcHJvdmlkZWQuIEZv ciB0aGlzIHJlYXNvbgppdCBpcyBpbXBvc3NpYmxlIHRvIHVzZSBpdCB3aXRoIHNvbWUgcG9v bGVycyAoc3VjaCBhcyBQZ0JvdW5jZXIpCmluIHRoZSBzZXNzaW9uIHBvb2xpbmcgbW9kZS4K SXQgaXMgcmVwbGFjZWQgYnkgdGhlIGZ1bGwgc2VxdWVuY2Ugb2YgcGFyc2UvYmluZC9leGVj dXRlL3N5bmMKcGFja2V0cy4gVGhpcyBiZWhhdmlvdXIgaXMgc2ltaWxhciB0byBwZ2JlbmNo IHdpdGggdGhlIGV4dGVuZGVkCnByb3RvY29sIGZsYWcuCi0tLQogc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYyAgICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKy0tCiBzcmMvYmlu L3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbCB8ICAxIC0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0ICAgICAgICAgICAgIHwgIDEgKwogc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtZXhlYy5jICAgICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysr KysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCAgICAgICAgICAgICAg fCAgOSArKysrCiA1IGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggNTg3MzU4NzFjMTcuLjhlMTFiYzM5ZGUyIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKQEAgLTMxNzksMTIgKzMxNzksMjYgQEAgc2VuZENvbW1hbmQoQ1N0 YXRlICpzdCwgQ29tbWFuZCAqY29tbWFuZCkKIAl7CiAJCWNvbnN0IGNoYXIgKnBhcmFtc1tN QVhfQVJHU107CiAKLQkJcHJlcGFyZUNvbW1hbmQoc3QsIHN0LT5jb21tYW5kKTsKIAkJZ2V0 UXVlcnlQYXJhbXMoJnN0LT52YXJpYWJsZXMsIGNvbW1hbmQsIHBhcmFtcyk7CiAKLQkJcGdf bG9nX2RlYnVnKCJjbGllbnQgJWQgc2VuZGluZyAlcyIsIHN0LT5pZCwgY29tbWFuZC0+cHJl cG5hbWUpOwotCQlyID0gUFFzZW5kUXVlcnlQcmVwYXJlZChzdC0+Y29uLCBjb21tYW5kLT5w cmVwbmFtZSwgY29tbWFuZC0+YXJnYyAtIDEsCi0JCQkJCQkJCXBhcmFtcywgTlVMTCwgTlVM TCwgMCk7CisJCWlmICghc3QtPnByZXBhcmVkKQorCQkJYWxsb2NDU3RhdGVQcmVwYXJlZChz dCk7CisKKwkJaWYgKCFzdC0+cHJlcGFyZWRbc3QtPnVzZV9maWxlXVtzdC0+Y29tbWFuZF0p CisJCXsKKwkJCXIgPSBQUXNlbmRQQkVTKHN0LT5jb24sIGNvbW1hbmQtPnByZXBuYW1lLAor CQkJCQkJICAgY29tbWFuZC0+YXJndlswXSwgY29tbWFuZC0+YXJnYyAtIDEsIE5VTEwsCisJ CQkJCQkgICBwYXJhbXMsIE5VTEwsIE5VTEwsIDApOworCQkJaWYgKCFyKQorCQkJCXBnX2xv Z19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShzdC0+Y29uKSk7CisJCQlzdC0+cHJlcGFy ZWRbc3QtPnVzZV9maWxlXVtzdC0+Y29tbWFuZF0gPSB0cnVlOworCQl9CisJCWVsc2UKKwkJ eworCQkJcGdfbG9nX2RlYnVnKCJjbGllbnQgJWQgc2VuZGluZyAlcyIsIHN0LT5pZCwgY29t bWFuZC0+cHJlcG5hbWUpOworCQkJciA9IFBRc2VuZFF1ZXJ5UHJlcGFyZWQoc3QtPmNvbiwg Y29tbWFuZC0+cHJlcG5hbWUsIGNvbW1hbmQtPmFyZ2MgLSAxLAorCQkJCQkJCQkJcGFyYW1z LCBOVUxMLCBOVUxMLCAwKTsKKwkJfQogCX0KIAllbHNlCQkJCQkJLyogdW5rbm93biBzcWwg bW9kZSAqLwogCQlyID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9w Z2JlbmNoX3dpdGhfc2VydmVyLnBsIGIvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hf d2l0aF9zZXJ2ZXIucGwKaW5kZXggYjc2ODVlYTVkMjAuLmMwNDdiNWQwNDYwIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAorKysg Yi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbApAQCAtMTIz MSw3ICsxMjMxLDYgQEAgbXkgQGVycm9ycyA9ICgKIAkJMiwKIAkJWwogCQkJcXJ7RVJST1I6 ICBzeW50YXggZXJyb3J9LAotCQkJcXJ7cHJlcGFyZWQgc3RhdGVtZW50IC4qIGRvZXMgbm90 IGV4aXN0fQogCQldLAogCQlxey0tIFNRTCBzeW50YXggZXJyb3IKICAgICBTRUxFQ1QgMSAr IDsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0IGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggZGJiYWU2NDJkNzYuLmViZWJi YWNkNWNkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dAor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dApAQCAtMjEwLDMgKzIxMCw0 IEBAIFBRZ2V0QXV0aERhdGFIb29rICAgICAgICAgMjA3CiBQUWRlZmF1bHRBdXRoRGF0YUhv b2sgICAgIDIwOAogUFFmdWxsUHJvdG9jb2xWZXJzaW9uICAgICAyMDkKIGFwcGVuZFBRRXhw QnVmZmVyVkEgICAgICAgMjEwCitQUXNlbmRQQkVTICAgICAgICAgICAgICAgIDIxMApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWV4ZWMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwppbmRleCAy MDNkMzg4YmRiZi4uYmVmMTAzYWMzZjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWV4ZWMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKQEAg LTE2ODIsNiArMTY4Miw1MiBAQCBQUXNlbmRRdWVyeVByZXBhcmVkKFBHY29ubiAqY29ubiwK IAkJCQkJCSAgIHJlc3VsdEZvcm1hdCk7CiB9CiAKKy8qIFBRc2VuZFBCRVMKKyAqCQlMaWtl IFBRc2VuZFF1ZXJ5UHJlcGFyZWQsIGJ1dCBwcmVwYXJlIGEgcXVlcnkKKyAqLworaW50CitQ UXNlbmRQQkVTKFBHY29ubiAqY29ubiwKKwkJICAgY29uc3QgY2hhciAqc3RtdE5hbWUsCisJ CSAgIGNvbnN0IGNoYXIgKnF1ZXJ5LAorCQkgICBpbnQgblBhcmFtcywKKwkJICAgY29uc3Qg T2lkICpwYXJhbVR5cGVzLAorCQkgICBjb25zdCBjaGFyICpjb25zdCAqcGFyYW1WYWx1ZXMs CisJCSAgIGNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAorCQkgICBjb25zdCBpbnQgKnBhcmFt Rm9ybWF0cywKKwkJICAgaW50IHJlc3VsdEZvcm1hdCkKK3sKKwlpZiAoIVBRc2VuZFF1ZXJ5 U3RhcnQoY29ubiwgdHJ1ZSkpCisJCXJldHVybiAwOworCisJLyogY2hlY2sgdGhlIGFyZ3Vt ZW50cyAqLworCWlmICghc3RtdE5hbWUpCisJeworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAic3RhdGVtZW50IG5hbWUgaXMgYSBudWxsIHBvaW50ZXIiKTsKKwkJcmV0dXJu IDA7CisJfQorCWlmICghcXVlcnkpCisJeworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihj b25uLCAiY29tbWFuZCBzdHJpbmcgaXMgYSBudWxsIHBvaW50ZXIiKTsKKwkJcmV0dXJuIDA7 CisJfQorCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFY X0xJTUlUKQorCXsKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBv ZiBwYXJhbWV0ZXJzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCisJCQkJCQkJCVBRX1FV RVJZX1BBUkFNX01BWF9MSU1JVCk7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiBQUXNl bmRRdWVyeUd1dHMoY29ubiwKKwkJCQkJCSAgIHF1ZXJ5LAorCQkJCQkJICAgc3RtdE5hbWUs CisJCQkJCQkgICBuUGFyYW1zLAorCQkJCQkJICAgcGFyYW1UeXBlcywKKwkJCQkJCSAgIHBh cmFtVmFsdWVzLAorCQkJCQkJICAgcGFyYW1MZW5ndGhzLAorCQkJCQkJICAgcGFyYW1Gb3Jt YXRzLAorCQkJCQkJICAgcmVzdWx0Rm9ybWF0KTsKK30KKwogLyoKICAqIFBRc2VuZFF1ZXJ5 U3RhcnQKICAqCUNvbW1vbiBzdGFydHVwIGNvZGUgZm9yIFBRc2VuZFF1ZXJ5IGFuZCBzaWJs aW5nIHJvdXRpbmVzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1m ZS5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaAppbmRleCA5MDVmMmYzM2Fi OC4uNzcyNTgzZGNlYTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBx LWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApAQCAtNTI1LDYg KzUyNSwxNSBAQCBleHRlcm4gaW50CVBRc2VuZFF1ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25u LAogCQkJCQkJCQljb25zdCBpbnQgKnBhcmFtTGVuZ3RocywKIAkJCQkJCQkJY29uc3QgaW50 ICpwYXJhbUZvcm1hdHMsCiAJCQkJCQkJCWludCByZXN1bHRGb3JtYXQpOworZXh0ZXJuIGlu dAlQUXNlbmRQQkVTKFBHY29ubiAqY29ubiwKKwkJCQkJICAgY29uc3QgY2hhciAqc3RtdE5h bWUsCisJCQkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5LAorCQkJCQkgICBpbnQgblBhcmFtcywK KwkJCQkJICAgY29uc3QgT2lkICpwYXJhbVR5cGVzLAorCQkJCQkgICBjb25zdCBjaGFyICpj b25zdCAqcGFyYW1WYWx1ZXMsCisJCQkJCSAgIGNvbnN0IGludCAqcGFyYW1MZW5ndGhzLAor CQkJCQkgICBjb25zdCBpbnQgKnBhcmFtRm9ybWF0cywKKwkJCQkJICAgaW50IHJlc3VsdEZv cm1hdCk7CiBleHRlcm4gaW50CVBRc2V0U2luZ2xlUm93TW9kZShQR2Nvbm4gKmNvbm4pOwog ZXh0ZXJuIGludAlQUXNldENodW5rZWRSb3dzTW9kZShQR2Nvbm4gKmNvbm4sIGludCBjaHVu a1NpemUpOwogZXh0ZXJuIFBHcmVzdWx0ICpQUWdldFJlc3VsdChQR2Nvbm4gKmNvbm4pOwot LSAKMi41Mi4wCgo= --------------0tE9WW0w60uS7QFRjkD4luSd--