Re: Potential issue in listExtensions()

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Dilip Kumar <dilipbalaut(at)gmail(dot)com>
Cc: Suraj Kharage <suraj(dot)kharage(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Potential issue in listExtensions()
Date: 2025-06-05 08:04:06
Message-ID: CABUevEzMSizz+qzgw7jnEzoFgqCu1QaLrGRpwQp9TPsznYPpSg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Jun 5, 2025 at 9:50 AM Dilip Kumar <dilipbalaut(at)gmail(dot)com> wrote:

> On Thu, Jun 5, 2025 at 5:53 AM Suraj Kharage
> <suraj(dot)kharage(at)enterprisedb(dot)com> wrote:
> >
> > Hi,
> >
> > Upstream commit d696406a9b255546bc1716d07199103abd8bb785 [1] added the
> support for default extension version in \dx output and changed the query
> that fetches the extension list.
> > The changed query seems problematic and might display duplicate entries
> of extension if the same object oid exists in pg_description.
> >
> > If I understand correctly, after oid wraparound, it is possible that the
> existing oid from another catalog might be used again for other catalog
> objects as per GetNewOidWithIndex().
> > If this is true, then it is possible that oid exists in pg_description
> for an object will be used for extension oid, and we might get a duplicate
> entry in \dx output.
>
> Yes your understanding is correct and there is a possibility of the
> bug you mentioned.
>

Yup, agreed. Simply, the new LEFT JOIN was added on the wrong line.

> ```
> > "FROM pg_catalog.pg_extension e "
> > "LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace "
> > "LEFT JOIN pg_catalog.pg_description d ON d.objoid = e.oid "
> > "LEFT JOIN pg_catalog.pg_available_extensions() ae(name,
> default_version, comment) ON ae.name = e.extname "
> > "AND d.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass\n",
> > ```
> >
> > We may need to handle this by moving the AND condition to the left join
> for pg_catalog.pg_description, so that we retrieve only pg_extension
> entries from pg_description.
> > Attaching the patch for the same.
> >
> > Thoughts?
> >
> Attached patch seems to be fixing the issue.
>

LGTM as well, applied.

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/>
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nazir Bilal Yavuz 2025-06-05 08:04:49 Update Windows CI Task Names: Server 2022 + VS 2022 Upgrade
Previous Message Yugo Nagata 2025-06-05 07:52:00 Re: psql: tab-completion support for COPY ... TO/FROM STDIN, STDOUT, and PROGRAM