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 1w19GM-0002F7-1z for pgsql-committers@arkaria.postgresql.org; Fri, 13 Mar 2026 20:37:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w19GJ-0008Vb-2Y for pgsql-committers@arkaria.postgresql.org; Fri, 13 Mar 2026 20:37:36 +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 1w19GJ-0008VT-1K for pgsql-committers@lists.postgresql.org; Fri, 13 Mar 2026 20:37:36 +0000 Received: from mail-dy1-x1329.google.com ([2607:f8b0:4864:20::1329]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w19GG-000000001UC-49pa for pgsql-committers@lists.postgresql.org; Fri, 13 Mar 2026 20:37:35 +0000 Received: by mail-dy1-x1329.google.com with SMTP id 5a478bee46e88-2bea5e8032bso1555996eec.1 for ; Fri, 13 Mar 2026 13:37:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1773434251; x=1774039051; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=ifAve/cySE9pAZitG0OOx8ZUcJTOOOH2pY0C0vyHdtI=; b=WmOlWeWD62KZGVe+MFuOtVnAv9JhPMdjYqyo0531BxeAPYmHEznnB8l9AOgj/IpGyM kH85/orUf1dmSX1FKxhhlowy7Sjh88z7nrc3mV/ks8N6aRJEsOzDXMe1hMLwKnllId1Y bvUY/NfBaIK25O/Bo1xreGyxFnReDvAmzllWe31jS4U3wfoeCp4sT1EUxQvytMQLtjBY Ya35KTZT2twkv/MFk4q+uKjye7Y49HkbzzW07A0LprXr6RK8KakCx1M10jqiT4zxXyvF Ruk76/WSeQKzFuOFMxgDFq0FUH0qWuo5PYeO74e5l45ShBojGu3R/SZoR53r4RpZUZgv IZ5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773434251; x=1774039051; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=ifAve/cySE9pAZitG0OOx8ZUcJTOOOH2pY0C0vyHdtI=; b=C47SBUJpc5jtjRkXia1KlmQqc2iYfw4YBasRUM7E0X4hcL1tUNETP78k1ut+OZxb2G kg/lhaB4hHSLqkmKicft/FK7859wl1szyeXeVC5Dg1tS7EZuwlY1IUS3GGWHif1l33fn xF6P578a+eF25C+m+nttbloEbl+DRTSgcvfrvaBPFPrtlJK878jQN5k1FEfPTQjfrmS/ zCSSE8CYwpfMjwbW0NSWg04IrJ47qnErgKfBaGTC3Vs0icHTBT2ZHApbCG29xHe/qIWy 9wHyYXaFI2wa+b4yygeYHrv6qvUkvfq/nblcbbyqKkoCJpnwKf4ahqbGccrpbGSlfv+e Vt2g== X-Forwarded-Encrypted: i=1; AJvYcCV1qb39hdEGeiiAvqU39hI1Ue7m/asVZZMOPLACRUT3SE33UhZOQZBl5WX0e+LUJhhzKqSa3xDlTEP97TPn7qUf@lists.postgresql.org X-Gm-Message-State: AOJu0YzEPrX9ckMi9U99GL3JL/8i2LdP737fFOxJ/V/l78oPwTMG0zdb JtRDo1wexC/mR+xSSvb4o63ea9MppevqPyLT15kwJ5kltFUWuqZgyYMCVWP1IaHrBf/XZCO6Phj HH1A= X-Gm-Gg: ATEYQzzolyx4AFTO7GfJ/9bui6umohZVCJnhR1B1pS/o/uLZ9a38C0FS77PP1BURGSE MRiWMDHg8jrKAbdUSWx9NMXWpg/WCI9nPRjoP/wKH39xANViBlOP+S1QJ25Txso8MWC4YeOVcAB KXmMKXhBEMIff9FeEu2/awQ7vulRDl2d5UNxsoKQ8TuWqJ+r5F6J5hL/GSMcKenzuaItmnaXzUR lm+k7p+Gvi/o7pElCdYFMblADgFTAZvvy0KXgEnbAaqrkX0y2zq1VVh2ysV41pXxArvVRkaJYEt KzC7R8MnkC4LKwPQX7OkrFEkMxAT+DfI8Ud19CM258U1ry9c7Q2ytkTu/M3L0wNNBY6bynWb7jV 74nIyMa2YIgSHbu7Pc2pd5/6t7unT7BQ3q13SrJEfc9VGPCqrZXWL6c2sZX2w7q89+PnESzobKb K/4pV4XPU/JTAY+wbFYnxU X-Received: by 2002:a05:693c:3945:b0:2b8:4a34:6c39 with SMTP id 5a478bee46e88-2bea54a1379mr1904992eec.16.1773434250738; Fri, 13 Mar 2026 13:37:30 -0700 (PDT) Received: from [10.10.244.3] ([50.175.226.10]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2beab5702e5sm4569977eec.29.2026.03.13.13.37.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 13:37:30 -0700 (PDT) Message-ID: <44cbdf50807b0232d0a01f0fababc7cbeeb33eb0.camel@j-davis.com> Subject: Re: pgsql: CREATE SUBSCRIPTION ... SERVER. From: Jeff Davis To: Andres Freund Cc: Peter Eisentraut , Jeff Davis , pgsql-committers@lists.postgresql.org Date: Fri, 13 Mar 2026 13:37:29 -0700 In-Reply-To: References: <1bb21c7d-885f-4f07-a3ed-21b60d7c92c6@eisentraut.org> <03d52b80fd264bb683fb2c46ad7a2934cb656f1a.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-+XXbg69ZNhwY6LqIor5S" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-+XXbg69ZNhwY6LqIor5S Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2026-03-13 at 09:54 -0400, Andres Freund wrote: > GetSubscription() does a dozen allocations or so, so I'm not sure it > matters > that ForeignServerConnectionString() would do another few. There is > FreeSubscription(), but it only seems to free a subset of the > allocations, and > none of the temporary allocations that are surely made below > GetSubscription(). That by itself seems like a problem. If FreeSubscription() is needed, then it should do its job; and if it's not needed, then it should be eliminated. To me it looks like it's needed. Otherwise there will be leaks for every invalidation. > But regardless of that, even if you want to make > ForeignServerConnectionString() not leak, I don't think that means > you need to > use PG_TRY/FINALLY. If there's an error, afaict the callers will just > throw > away the apply context, no? Otherwise there'd likely be way more > problems. I believe that's correct. While there's no delete or reset, it looks like an error will cause the worker to exit/restart. > So > just create the context without a PG_TRY and delete it in the success > case. > In the failure case it'll be cleaned up by error handling. Thank you, patch attached. > And if you do need the PG_TRY for some reason, why not do the > text_to_cstring() call inside the PG_TRY, since it never can have a > value if > an error was thrown? That's what I did in the patch I posted here: https://www.postgresql.org/message-id/f48610c90e69de4b30841361c568c3765e8f3= dfe.camel%40j-davis.com but I think you are right that we don't need the try/catch at all. Regards, Jeff Davis --=-+XXbg69ZNhwY6LqIor5S Content-Disposition: attachment; filename*0=v22-0001-Eliminate-PG_TRY-PG_CATCH-in-ForeignServerConnec.pat; filename*1=ch Content-Type: text/x-patch; name="v22-0001-Eliminate-PG_TRY-PG_CATCH-in-ForeignServerConnec.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiZjA5OTMyZGJjMGMzYWI3M2JmZDU1NjZmNWY2OWEzMmQ3MDkyNzhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDEzIE1hciAyMDI2IDEzOjI0OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MjJdIEVsaW1p bmF0ZSBQR19UUlkoKS9QR19DQVRDSCgpIGluCiBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmlu ZygpLgoKVGhlIGVycm9yIHBhdGggaXMgY2xlYW5lZCB1cCBmb3IgYWxsIGNhbGxlcnMsIHNvIG9u bHkgd29ycnkgYWJvdXQgdGhlCnN1Y2Nlc3MgcGF0aC4gSW4gdGhlIGNhc2Ugb2YgYSBsb2dpY2Fs IHdvcmtlciwgaXQgd2lsbCBqdXN0IGV4aXQuCgpTdWdnZXN0ZWQtYnk6IEFuZHJlcyBGcmV1bmQg PGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS94dmRq cmRxbnBhcDN1cTdvd2Jhb3gzcjdwNWdmN3N2NjJhYXFmMmp1M3ZiNnlnbGF0ciU0MGt2dndob3Vk cmx4cQotLS0KIHNyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jIHwgNTMgKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCsp LCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVp Z24uYyBiL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCmluZGV4IGNmMTBhOGMwMGY5Li5j ZDJkODVkZjgxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKKysr IGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKQEAgLTIyNSw3ICsyMjUsMTEgQEAgRm9y ZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoT2lkIHVzZXJpZCwgT2lkIHNlcnZlcmlkKQogewog CU1lbW9yeUNvbnRleHQgdGVtcENvbnRleHQ7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7Ci0JY2hh cgkgICAqcmVzdWx0ID0gTlVMTDsKKwlGb3JlaWduU2VydmVyICpzZXJ2ZXI7CisJRm9yZWlnbkRh dGFXcmFwcGVyICpmZHc7CisJdGV4dAkgICAqY29ubmVjdGlvbl90ZXh0OworCURhdHVtCQljb25u ZWN0aW9uX2RhdHVtOworCWNoYXIJICAgKnJlc3VsdDsKIAogCS8qCiAJICogR2V0Rm9yZWlnblNl cnZlciwgR2V0Rm9yZWlnbkRhdGFXcmFwcGVyLCBhbmQgdGhlIGNvbm5lY3Rpb24gZnVuY3Rpb24K QEAgLTIzOCw0MiArMjQyLDI3IEBAIEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKE9pZCB1 c2VyaWQsIE9pZCBzZXJ2ZXJpZCkKIAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0 ZW1wQ29udGV4dCk7CiAKLQlQR19UUlkoKTsKLQl7Ci0JCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsK LQkJRm9yZWlnbkRhdGFXcmFwcGVyICpmZHc7Ci0JCXRleHQJICAgKmNvbm5lY3Rpb25fdGV4dCA9 IE5VTEw7Ci0JCURhdHVtCQljb25uZWN0aW9uX2RhdHVtOwotCi0JCXNlcnZlciA9IEdldEZvcmVp Z25TZXJ2ZXIoc2VydmVyaWQpOwotCQlmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIoc2VydmVy LT5mZHdpZCk7Ci0KLQkJaWYgKCFPaWRJc1ZhbGlkKGZkdy0+ZmR3Y29ubmVjdGlvbikpCi0JCQll cmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCi0JCQkJCSBlcnJtc2coImZvcmVpZ24gZGF0YSB3cmFwcGVyIFwiJXNcIiBkb2VzIG5vdCBz dXBwb3J0IHN1YnNjcmlwdGlvbiBjb25uZWN0aW9ucyIsCi0JCQkJCQkJZmR3LT5mZHduYW1lKSwK LQkJCQkJIGVycmRldGFpbCgiRm9yZWlnbiBkYXRhIHdyYXBwZXIgbXVzdCBiZSBkZWZpbmVkIHdp dGggQ09OTkVDVElPTiBzcGVjaWZpZWQuIikpKTsKKwlzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVy KHNlcnZlcmlkKTsKKwlmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIoc2VydmVyLT5mZHdpZCk7 CiAKKwlpZiAoIU9pZElzVmFsaWQoZmR3LT5mZHdjb25uZWN0aW9uKSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVy cm1zZygiZm9yZWlnbiBkYXRhIHdyYXBwZXIgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgc3Vic2Ny aXB0aW9uIGNvbm5lY3Rpb25zIiwKKwkJCQkJCWZkdy0+ZmR3bmFtZSksCisJCQkJIGVycmRldGFp bCgiRm9yZWlnbiBkYXRhIHdyYXBwZXIgbXVzdCBiZSBkZWZpbmVkIHdpdGggQ09OTkVDVElPTiBz cGVjaWZpZWQuIikpKTsKIAotCQljb25uZWN0aW9uX2RhdHVtID0gT2lkRnVuY3Rpb25DYWxsMyhm ZHctPmZkd2Nvbm5lY3Rpb24sCi0JCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0odXNlcmlkKSwK LQkJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShzZXJ2ZXJpZCksCi0JCQkJCQkJCQkJCVBvaW50 ZXJHZXREYXR1bShOVUxMKSk7CisJY29ubmVjdGlvbl9kYXR1bSA9IE9pZEZ1bmN0aW9uQ2FsbDMo ZmR3LT5mZHdjb25uZWN0aW9uLAorCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0odXNlcmlkKSwK KwkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHNlcnZlcmlkKSwKKwkJCQkJCQkJCQlQb2ludGVy R2V0RGF0dW0oTlVMTCkpOwogCi0JCWNvbm5lY3Rpb25fdGV4dCA9IERhdHVtR2V0VGV4dFBQKGNv bm5lY3Rpb25fZGF0dW0pOworCWNvbm5lY3Rpb25fdGV4dCA9IERhdHVtR2V0VGV4dFBQKGNvbm5l Y3Rpb25fZGF0dW0pOwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwotCQlyZXN1 bHQgPSB0ZXh0X3RvX2NzdHJpbmcoKHRleHQgKikgY29ubmVjdGlvbl90ZXh0KTsKLQl9Ci0JUEdf RklOQUxMWSgpOwotCXsKLQkJLyogbm8tb3Agb24gc3VjY2VzcyBwYXRoICovCi0JCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwor CXJlc3VsdCA9IHRleHRfdG9fY3N0cmluZyhjb25uZWN0aW9uX3RleHQpOwogCi0JCU1lbW9yeUNv bnRleHREZWxldGUodGVtcENvbnRleHQpOwotCX0KLQlQR19FTkRfVFJZKCk7CisJTWVtb3J5Q29u dGV4dERlbGV0ZSh0ZW1wQ29udGV4dCk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQotLSAKMi40My4w Cgo= --=-+XXbg69ZNhwY6LqIor5S--