Potential issue in listExtensions() - Mailing list pgsql-hackers

From Suraj Kharage
Subject Potential issue in listExtensions()
Date
Msg-id CAF1DzPVBrN-cmPB2zb7ZU=2J4vEF2fNdArGCG9w+9fnKq4v8tg@mail.gmail.com
Whole thread Raw
Responses Re: Potential issue in listExtensions()
List pgsql-hackers
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.

```
"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?

--

Thanks & Regards, 
Suraj kharage, 

Attachment

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Wrong security context for deferred triggers?
Next
From: David Rowley
Date:
Subject: Re: Question Regarding Merge Append and Parallel Execution of Index Scans on Partitioned Table