Re: CheckAttributeType() forgot to recurse into multiranges
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2026-04-23T07:22:15Z
Lists: pgsql-hackers
On Wed, Apr 22, 2026 at 11:56:12PM +0300, Heikki Linnakangas wrote: > That looks like a straightforward oversight in CheckAttributeType(). When > multiranges were introduced, it didn't get the memo. Nice catch. --- this must be rejected to avoid self-inclusion issues: +-- these must be rejected to avoid self-inclusion issues: alter type two_ints add attribute c two_ints_range; ERROR: composite type two_ints cannot be made a member of itself +alter type two_ints add attribute c two_ints_multirange; +ERROR: composite type two_ints cannot be made a member of itself If you want to create a parallel with multirangetypes.sql, this choking case may be better if placed there rather than rangetypes.sql, as it is a multi case. Not a big deal, still. > While working on the fix, I noticed that in case of dropped columns, > CheckAttributeType() is called with InvalidOid. It tolerates that, but it > seems accidental and it performs a bunch of futile syscache lookups with > InvalidOid, so it would be better to not do that. The second patch fixes > that. This one seems harmless as far as I can see, but we should be careful to bypass any attisdropped while scanning a set of attributes, so a backpatch is in order, indeed. LGTM. -- Michael
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Don't allow composite type to be member of itself via multirange
- c7a1d5fc6513 14.23 landed
- 34ebeb15c8b1 15.18 landed
- 06e304524d5c 16.14 landed
- 54343f6f9046 17.10 landed
- ff8f27d6eae2 18.4 landed
- dd4069197650 19 (unreleased) landed
-
Don't call CheckAttributeType() with InvalidOid on dropped cols
- d2f58c42a261 14.23 landed
- e1830ebf5219 15.18 landed
- 526d9ca619cc 16.14 landed
- d54e75441518 17.10 landed
- 01db3f0398fd 18.4 landed
- 713bce9484de 19 (unreleased) landed