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 1wDZI4-00372V-2A for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 02:50:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDZH4-007fUO-1g for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 02:49:42 +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 1wDZH4-007fUG-0c for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 02:49:42 +0000 Received: from mail-qv1-xf42.google.com ([2607:f8b0:4864:20::f42]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDZH2-00000001YDp-0Etq for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 02:49:41 +0000 Received: by mail-qv1-xf42.google.com with SMTP id 6a1803df08f44-89f1e767f92so1686446d6.2 for ; Thu, 16 Apr 2026 19:49:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776394178; cv=none; d=google.com; s=arc-20240605; b=jLsYvx4fXTXlDCui/Vo943+ur+h9q+JYXJ68XP5LM5Bx0rXJRU9sTarPRgM0jdiWeZ pUlBNtNPvuOg6YCD3bfwH2CiZuI9omjvbG2fceqSblRX7t5pl3I2h59iPLmW/8K+o7kC MJCM/rwzAL3LJlFCLnNRATCYRrEA0AJLhplz+BZ24hSLa4ev1HG+di14HE0Wr3akiBhF ONCU/HWSH+EKHIJ0rWVIGCglfx/Q3EtcYZfnvZJNNyDP8JK1GzU6zH6RIq5UuBxPudrp 7gDEquqd78oTfpnxKb7elklZsgR230SYMq99OnILPT18ti5vK2zbg+pw/B0ePrfNCMr+ ISkA== 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=rAGMCQfb5BtUxjcMivmkfgaVIhUF+wnAyF6jNN9U1Jc=; fh=Z0obun1bL16Vr1a3wvTu3YFCxnt5f9SVpW5TVwJfX3k=; b=bP9joeVqglEpXdZWL7VruO40e1Ts48qIInzuhiI4FlJISI5Di4ZHeuGvRDT0WDcaTw ZvktF7lPaTkXXrJYvZbRHHIHUOYX4U5l/GjDtEv48nppZ2oC8lANylfqqc5tVpdyJeBG XsD742CywD0ObhIRz5qCzQFV7IUCqGN408eFab0zLnEaZMFpd8ArfvGupG3GBBIcYU5e SOd+PBB3LwdqLyBapSVaph1syeRUYb5KHnA6NOAM8J3URQehllGdOm2xn22ITIPkG2sU O9n72xuVCXucJdniXwpRFRRj9+Zm/JDizciT2fU3DH4rnjoyXNpSQC46X9F+hryVgacS Q4rA==; 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=1776394178; x=1776998978; 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=rAGMCQfb5BtUxjcMivmkfgaVIhUF+wnAyF6jNN9U1Jc=; b=rG2e+flWtjAJ0BZVa6VSjJ5X9StNCvocj9i1739PTrmBy6Hzfe7WOgGSyfAnudloEr Q1/1I1nP0jCzPtIfqast5HJuAsHtyx7hzJudUat5TjCyxLqyjc6YSkZXGKq81Alh6Ckf qs5rI3Q901XNxOgkfSdmFijdH+chYnTIbkLTeBrddk05J/eRECZ4IlZ/d+cuX6x/Q9r1 LQF9gN3vRLGgXaEX4jrR4aENhOubmYJ1ijcaSGikEWtrVgmeTOHxGAO3o2mLtFgBlZFv 8QVXdsNe8qkTerChiZUT2Ed4kpQNeewJ43i5EAH/s3KtmK0T4ITEKZTOW+mTNV/nLHGQ D+jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776394178; x=1776998978; 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=rAGMCQfb5BtUxjcMivmkfgaVIhUF+wnAyF6jNN9U1Jc=; b=hva5N0goH+mLxaceo9YNQQ2tCgHl5HQmeuAsbl/qwHWJzTgMiS5MiWfbtvdJ4+M85D iHANloWX6Y8sUxxyWcuNByN4aV8G50LeoUpiHGMCNjXVgi5+IJMhZ3t8dxjPC73fQxL5 WlmhLfWAkxN0QBghOuAqWD4b2a+BwUYsWpuunFUwHR25kF2tOBrupOtH8xSucqTaImri +PsSvqWi9Djubm4fRae4pzvssC4vSltN2frNpGKD8pzF/AT0YleuNtcLmgkKrRCkmsIo rhnaE/WhyIMQFfpzm6ejRKXlvg/OlzEFvqMG//LRgzxe5wCYkscpoOWAAF5I5G3v4Ff2 QdsQ== X-Forwarded-Encrypted: i=1; AFNElJ+cYTCN0f4Au9g1ds50u8boR+58jcvAS6C/1KMtZDZktAM20Tja76TVhYB+3EjesFm1fPOUyYxfi5U8EBSy@lists.postgresql.org X-Gm-Message-State: AOJu0YyafzmtreOGl7Ik4QtgPQFktX2+LjU/ulyGwU03GPoQRBQTNk0K eRHO+D0EIYj7h8bLwXFpx8SZsHtlEkIXgk2mSjwdijjEJI/G06ELWqZjDbOoZbH3fAU47OeSd8L 61UwlODuhGhjIHacBjOpIIBtylVuo1uI= X-Gm-Gg: AeBDieu9bRuRjo4VsPZ86lWwTlNVLJ5YR0AfRy004GRgQfZ2HyS5nzOw90Fs1h4JGvF kdBBVttLKJEhRb7lpxqfqegkxf0VtrZjWoHW4ZZ3cr2Jb7vTJ/FOL7bcZHObboSD/QSc9WnaiHb iKxm8WXUdSzu4VevPnSRTJwkDEC2irqDIgU485hUOSXeRVeNNy1te82BXmkHSVL3/SdH8bYa65J pSxouqnxxAQz49X4t4FcdFkqx+/Tp0dHgVDhZPBXvw2viE9piq7JreDQNV2sID3oPs9kIENzfm4 atv3Ia+GM9/M15FCBCk= X-Received: by 2002:a05:6214:3490:b0:8ac:b4d5:50e8 with SMTP id 6a1803df08f44-8b0280f80ddmr15069966d6.26.1776394178037; Thu, 16 Apr 2026 19:49:38 -0700 (PDT) MIME-Version: 1.0 References: <976a432b-9221-4825-8e8f-41f4375737fe@app.fastmail.com> In-Reply-To: From: Hu Xunqi Date: Fri, 17 Apr 2026 10:49:26 +0800 X-Gm-Features: AQROBzCA2gPy_HCeRvVmALbOWBHZkxdSI9xEPP9rq4DP1fVBjZ1A806GKof-Nos Message-ID: Subject: Re: Reject invalid databases in pg_get_database_ddl() To: Amit Langote Cc: Euler Taveira , Lakshmi N , "pgsql-hackers@lists.postgresql.org" , Andrew Dunstan Content-Type: multipart/alternative; boundary="000000000000f68a99064f9effd4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f68a99064f9effd4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 17, 2026 at 10:16=E2=80=AFAM Amit Langote wrote: > On Fri, Apr 17, 2026 at 10:47=E2=80=AFAM Euler Taveira wrote: > > On Thu, Apr 16, 2026, at 8:46 PM, Amit Langote wrote: > > > > > > Thanks. Will push the attached shortly. > > > > I think the errhint() is excessive in this context. It makes sense if > you are > > executing ALTER DATABASE, for example. > > Yeah, agreed. > > > I suggest a message like > > > > database \"%s\" is an invalid database > > Or just drop it, because the errmsg already says "invalid database %s". > > > Regarding the test case suggested by Japin Li, I don't think it is wort= h > because > > it is a transient state (unless something bad happened and pg_database > contains > > a dangling row.) > > Agreed. > +1. As this is an edge case failure, it=E2=80=99s not worth extending test = time. > > Patch updated. > > -- > Thanks, Amit Langote > + /* + * Reject invalid databases: datconnlimit =3D -2 would be emitted a= s + * CONNECTION LIMIT =3D -2, which cannot be executed. + */ This comment looks a bit too centered on datconnlimit=3D-2, but the real issue is that an invalid pg_database row should not be deparsed into DDL. So, maybe rephrase like: /* * Reject invalid databases. Deparsing a pg_database row in invalid state * can produce SQL that is not executable, such as CONNECTION LIMIT =3D -2. */ Regards, Xunqi Hu --000000000000f68a99064f9effd4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Fri, Apr 17,= 2026 at 10:16=E2=80=AFAM Amit Langote <amitlangote09@gmail.com> wrote:
On Fri, Apr 17, 2026 at 10:47=E2=80=AFAM = Euler Taveira <eu= ler@eulerto.com> wrote:
> On Thu, Apr 16, 2026, at 8:46 PM, Amit Langote wrote:
> >
> > Thanks.=C2=A0 Will push the attached shortly.
>
> I think the errhint() is excessive in this context. It makes sense if = you are
> executing ALTER DATABASE, for example.

Yeah, agreed.

> I suggest a message like
>
>=C2=A0 =C2=A0database \"%s\" is an invalid database

Or just drop it, because the errmsg already says "invalid database %s&= quot;.

> Regarding the test case suggested by Japin Li, I don't think it is= worth because
> it is a transient state (unless something bad happened and pg_database= contains
> a dangling row.)

Agreed.


+1. As this is a= n edge case failure, it=E2=80=99s not worth extending test time.
=
=C2=A0