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 1w7DXN-00555t-1h for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 14:24:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7DXM-003csL-0A for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 14:24:16 +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 <3danissimo@gmail.com>) id 1w7DXL-003csD-2O for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 14:24:16 +0000 Received: from mail-yx1-xb129.google.com ([2607:f8b0:4864:20::b129]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <3danissimo@gmail.com>) id 1w7DXJ-000000020RO-2hLu for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 14:24:15 +0000 Received: by mail-yx1-xb129.google.com with SMTP id 956f58d0204a3-64eaf8aa893so5565646d50.3 for ; Mon, 30 Mar 2026 07:24:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774880653; cv=none; d=google.com; s=arc-20240605; b=RpUarJi9vFHDPagzAMx4dpePAZsXBvT4jk5sZdoj+j7vkqUJI9pDVMn56nzGBmCoT7 KblGPYITlZftKKXi5RB6O8UKG3L2VCYlIV4jj7F0XR9leC+Bx9E+MhagzvHq7zAW2Zrx ImquoQeiKtoXlvfxqzojcqzcp0rD9LG6Zh5azt1ZksSGIBlnP5ZhAjM7mNEkfJjBu0YV AiXB7w2rjYuItUBCaPcrXJRIWKK+Kw8TlCyrXMeb4gnHzx+6ZQZR3vD9XXeKow5vptBU x8Z2l8n0rMKK5JECTRVYiro0LsGSX3c25ZDdeUIzrbQXQ76t+vf/DqVwwWbzfLv0l6M5 Cfeg== 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=pQbeLPjzcV4v/XAkd4IoEuadap3wLg4PCUvm+Wtl6xg=; fh=CnfR/KLNRrQDhPGfWua/GioY+kO/FqkeGcpMo+PONDE=; b=Znb2Wd1arcuKeDoHl3rGU8fcD7VbtT0DPLTWwkHAZZD0M7cOF86T7iMiZH+DtZ6IMd M+CPYPqHEJAvlb7JTNoB+BgPMBFMrBfhCi1r6t3A7DIzr+luLmGkge5hb4M5GDCiyq85 GSHw8Y0+/XMYHC4LmG4wzBY25jMi0i7+pUeGthK2z+7rzCLS5HWQVqhkaarE8LTmbyS6 gZIXOe3tLHdyC5jccXZa6v7/1NQnveW/XgSzMWH4BA4QjXx8ac1EHgxPkslVfUm72uYd 5UsUwmnE1KabTXOUNffTT1At1rycOKkQVhMQdmo2c3TIGtIffYvFNZQmxHUBt4o4jLw+ R2fA==; 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=gmail.com; s=20251104; t=1774880652; x=1775485452; darn=lists.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=pQbeLPjzcV4v/XAkd4IoEuadap3wLg4PCUvm+Wtl6xg=; b=m0emwqyjrQfBqw7g/gvahUCfdTMzetfMOM8LQcu3btfx2seybGSzhFRMcZY7/IQBui e5LpQFZXbWdadyhCItVzDyJZk0L6jxcRVP2TNHbwizvlLZe6abGO1gfgGlY9qVOdpoBQ 1qDPBuRy30kMk/6HV6Mls8hA0YoduJug2R8PR6JE+3/cXToQKMD4foeTfH9dPK+ST3eH V8Zko5tM1yc9a6sXuJwp+VkUgLldVpoZ22M6e7Bp4aPtE3ZGPWm6D5Dc9dqcdCU9mw89 UKY8OQIlSimro0F8rWYIa3hBi2drel43jQ35wUUHB89zyq9ApedkOQcERZyV2ph3cBjV X2Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774880652; x=1775485452; 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=pQbeLPjzcV4v/XAkd4IoEuadap3wLg4PCUvm+Wtl6xg=; b=DZ+57JnohB7fguZBraSQcT521oHZ0MMK4hDZqTNzdm4lAoum+af7BKMfyHi1y3C4IK NDCZiGDwfi5GPtfzUafhyVy01R2DcbZAXrOZzURDC3UlI3sMj8Aeq0sZFKyjpofiXaZU hppnRCWV/D99uZAPD+jbRm5vsd/9ZfIHkX9BzvXw15OWue2NCSlwALaloKUMD2k/ZH0F MA26Kz8WUtprRFIeKW7NlORajc9TKd49U4wC7mHnMbvVp8JblDutCMPh97ZzJTiEiIMW J7yx8P/WW6eX4qD5gZ34/0ptKWcgePdFlJvpKaDaAdg2+J5tj0NqR8px/OeWxRb7nSy9 Xl8A== X-Gm-Message-State: AOJu0YzKPs5/305f81Mf1Hx+cJUE5ylFGGBsC/2hiI07q4ZtqC3G4n2t wTbSH8Q5w2D7XidTbIwX0YsVkSlp2psjDxC02+swImRAa7KPPCL8wW2/2pVfLmCX76Wa244DKAn 4lo5MDee3DR/m2izKjNVtG0M1XgOscznYTIC7 X-Gm-Gg: ATEYQzwpcb7RMl8lJQxd83kD9JZlIUXhsfiq99pSN9aTKSzK4lO+05CzaLwqVj867yU Ed5+67k+bLqhfD8cAZ3GE20v1gk7nYmD/BFTz4+vWeEzOLopLdAz81RU32Nqn6HzlUFdZeFmpTS gH2dIDxiO5U/Zn20PU8J5768uVynWeUiSv3IPAdEIsfpfPkL8xRR+s1AIJIpesF7g9kN+QE0jjG Q87Qr0DvCHgZE4KSOcl5Ni5KNNScszr4Nip8eLbGibG9pkHfLh6a/Ez5u66RFqC0i/EP+53qJlT 11N5PQzz X-Received: by 2002:a05:690c:93:b0:79c:142b:29b6 with SMTP id 00721157ae682-79c142b36cfmr122141517b3.25.1774880652405; Mon, 30 Mar 2026 07:24:12 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Mon, 30 Mar 2026 21:24:01 +0700 X-Gm-Features: AQROBzCas5quLP5umY1Qt7lhRcMfDtAtPMSRR5Cy5695DlcWTKbIKxYFCoQBbf8 Message-ID: Subject: Re: Get rid of redundant StringInfo accumulation To: Andres Freund Cc: Postgres hackers Content-Type: multipart/mixed; boundary="000000000000ce96af064e3e9a80" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ce96af064e3e9a80 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Mar 30, 2026 at 7:52=E2=80=AFPM Andres Freund = wrote: > > I don't see when the overhead of creating an populating the string info e= ver > matters in these cases. This is optimizing something that never can matte= r for > real world performance. Even if it were worth optimizing them, I doubt t= hat > the log level check is useful here, because most if not all of these are > logged with a level that's logged in nearly all installations. > Thank you for the review! I have a few arguments to defend this patch : 1) It is normal practice in the code base to check log level before allocating memory for StringInfo or some other structure. For example, I found the log level check even before a very lightweight piece of code (see xlogutils.c) and even if we are going to emit log with DEBUG3 level (see postmaster.c). 2) Originally, I created this patch in order to avoid spending time during acquiring LWLock before entering the GetLockHoldersAndWaiters function. The log_lock_waits parameter is "true" by default, so even if log level is high= , we will *waste* time on the lock acquiring. I.e. this patch is not only abo= ut getting rid of redundant memory allocation - it is also about reducing wait= ing time on the locks. I think that it may be noticeable in conditions of a hug= e number of parallel processes. 3) I don't think that all other places (except lock.c and proc.c) where I have added log level check are really matter for real world performance. This is more about consistent approach : if we check log level in lock.c, then we should check it everywhere (if it makes sense). Again, it is normal practic= e for the postgres' code. Am I missing something? BTW, during writing it I noticed that I forgot to add log level check for pretty important code path (proc.c). Please, see it in the v3 patch. -- Best regards, Daniil Davydov --000000000000ce96af064e3e9a80 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Get-rid-of-redundant-calculations.patch" Content-Disposition: attachment; filename="v3-0001-Get-rid-of-redundant-calculations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnda3b7k0 RnJvbSA1ZGNmZDViMDk2MGZjZTFmMDQyMmE0ZjczZjhiNjcyYjY5NTk2NDEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBNb24sIDMwIE1hciAyMDI2IDEzOjI0OjAzICswNzAwClN1YmplY3Q6IFtQQVRD SCB2M10gR2V0IHJpZCBvZiByZWR1bmRhbnQgY2FsY3VsYXRpb25zCgotLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYyB8IDcgKysrKystLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgIHwgMyArKysKIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICB8IDMgKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG9jay5jICAgICAgICAgICAgfCAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJv Yy5jICAgICAgICAgICAgfCAyICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMg ICAgICAgICAgfCAzICsrLQogNiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv Y29uZmxpY3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYwpp bmRleCBjYTcxYTgxYzdiZi4uN2I2NzZjZTFjNjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2NvbmZsaWN0LmMKQEAgLTEwOCw2ICsxMDgsMTEgQEAgUmVwb3J0QXBwbHlDb25m bGljdChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgaW50IGVsZXZlbCwK IAlSZWxhdGlvbglsb2NhbHJlbCA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKIAlTdHJpbmdJ bmZvRGF0YSBlcnJfZGV0YWlsOwogCisJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fY29uZmxp Y3QoTXlTdWJzY3JpcHRpb24tPm9pZCwgdHlwZSk7CisKKwlpZiAoIW1lc3NhZ2VfbGV2ZWxfaXNf aW50ZXJlc3RpbmcoZWxldmVsKSkKKwkJcmV0dXJuOworCiAJaW5pdFN0cmluZ0luZm8oJmVycl9k ZXRhaWwpOwogCiAJLyogRm9ybSBlcnJkZXRhaWwgbWVzc2FnZSBieSBjb21iaW5pbmcgY29uZmxp Y3RpbmcgdHVwbGVzIGluZm9ybWF0aW9uLiAqLwpAQCAtMTIwLDggKzEyNSw2IEBAIFJlcG9ydEFw cGx5Q29uZmxpY3QoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sIGludCBl bGV2ZWwsCiAJCQkJCQkJCSBjb25mbGljdHR1cGxlLT50cywKIAkJCQkJCQkJICZlcnJfZGV0YWls KTsKIAotCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2NvbmZsaWN0KE15U3Vic2NyaXB0aW9u LT5vaWQsIHR5cGUpOwotCiAJZXJlcG9ydChlbGV2ZWwsCiAJCQllcnJjb2RlX2FwcGx5X2NvbmZs aWN0KHR5cGUpLAogCQkJZXJybXNnKCJjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcIiVz LiVzXCI6IGNvbmZsaWN0PSVzIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXgg Y2MyMDdjYjU2ZTMuLjdlOWJmYWM2MzRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXku YwpAQCAtNTI2Nyw2ICs1MjY3LDkgQEAgS25vd25Bc3NpZ25lZFhpZHNEaXNwbGF5KGludCB0cmFj ZV9sZXZlbCkKIAl0YWlsID0gcEFycmF5LT50YWlsS25vd25Bc3NpZ25lZFhpZHM7CiAJaGVhZCA9 IHBBcnJheS0+aGVhZEtub3duQXNzaWduZWRYaWRzOwogCisJaWYgKCFtZXNzYWdlX2xldmVsX2lz X2ludGVyZXN0aW5nKHRyYWNlX2xldmVsKSkKKwkJcmV0dXJuOworCiAJaW5pdFN0cmluZ0luZm8o JmJ1Zik7CiAKIAlmb3IgKGkgPSB0YWlsOyBpIDwgaGVhZDsgaSsrKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCmluZGV4IGRlOTA5MmZkZjViLi4yZjJjMGRmN2I3NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwpAQCAtMjgyLDYgKzI4Miw5IEBAIExvZ1JlY292ZXJ5Q29uZmxpY3QoUmVj b3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24sIFRpbWVzdGFtcFR6IHdhaXRfc3RhcnQsCiAJU3Ry aW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5wcm9jcyA9IDA7CiAKKwlpZiAoIW1lc3NhZ2VfbGV2 ZWxfaXNfaW50ZXJlc3RpbmcoTE9HKSkKKwkJcmV0dXJuOworCiAJLyoKIAkgKiBUaGVyZSBtdXN0 IGJlIG5vIGNvbmZsaWN0aW5nIHByb2Nlc3NlcyB3aGVuIHRoZSByZWNvdmVyeSBjb25mbGljdCBo YXMKIAkgKiBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwppbmRl eCAyMzQ2NDNlNGRkNy4uNjlkZDIxZjE3OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwpAQCAt MTE3Miw3ICsxMTcyLDcgQEAgTG9ja0FjcXVpcmVFeHRlbmRlZChjb25zdCBMT0NLVEFHICpsb2Nr dGFnLAogCQkJICogbG9nTG9ja0ZhaWx1cmUgPSB0cnVlIGFuZCBsb2NrIGFjcXVpc2l0aW9uIGZh aWxzIHdpdGggZG9udFdhaXQKIAkJCSAqID0gdHJ1ZQogCQkJICovCi0JCQlpZiAobG9nTG9ja0Zh aWx1cmUpCisJCQlpZiAobG9nTG9ja0ZhaWx1cmUgJiYgbWVzc2FnZV9sZXZlbF9pc19pbnRlcmVz dGluZyhMT0cpKQogCQkJewogCQkJCVN0cmluZ0luZm9EYXRhIGJ1ZiwKIAkJCQkJCQlsb2NrX3dh aXRlcnNfc2J1ZiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDVjNDdjZjEzNDczLi42NzUx MWU4YTZmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBQ cm9jU2xlZXAoTE9DQUxMT0NLICpsb2NhbGxvY2spCiAJCQlpZiAobXlXYWl0U3RhdHVzID09IFBS T0NfV0FJVF9TVEFUVVNfT0spCiAJCQkJcGdzdGF0X2NvdW50X2xvY2tfd2FpdHMobG9jYWxsb2Nr LT50YWcubG9jay5sb2NrdGFnX3R5cGUsIG1zZWNzKTsKIAotCQkJaWYgKGxvZ19sb2NrX3dhaXRz KQorCQkJaWYgKGxvZ19sb2NrX3dhaXRzICYmIG1lc3NhZ2VfbGV2ZWxfaXNfaW50ZXJlc3Rpbmco TE9HKSkKIAkJCXsKIAkJCQlTdHJpbmdJbmZvRGF0YSBidWYsCiAJCQkJCQkJbG9ja193YWl0ZXJz X3NidWYsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9z cmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggMjYxMTg2NjFmMDcuLjFmYjAw ZmFhOTc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC0yNjksNyArMjY5LDggQEAg UGVyZm9ybUF1dGhlbnRpY2F0aW9uKFBvcnQgKnBvcnQpCiAJLyogQ2FwdHVyZSBhdXRoZW50aWNh dGlvbiBlbmQgdGltZSBmb3IgbG9nZ2luZyAqLwogCWNvbm5fdGltaW5nLmF1dGhfZW5kID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOwogCi0JaWYgKGxvZ19jb25uZWN0aW9ucyAmIExPR19DT05ORUNU SU9OX0FVVEhPUklaQVRJT04pCisJaWYgKChsb2dfY29ubmVjdGlvbnMgJiBMT0dfQ09OTkVDVElP Tl9BVVRIT1JJWkFUSU9OKSAmJgorCQltZXNzYWdlX2xldmVsX2lzX2ludGVyZXN0aW5nKExPRykp CiAJewogCQlTdHJpbmdJbmZvRGF0YSBsb2dtc2c7CiAKLS0gCjIuNDMuMAoK --000000000000ce96af064e3e9a80--