Peter Eisentraut <pe...@eisentraut.org> writes: > On 06.02.24 16:14, Tom Lane wrote: >> +1 for the general idea, but it seems like "row type equality" >> might still be a slightly fuzzy concept.
> I did another pass across the callers to check what pg_attribute fields > might be relevant. > Collation definitely needs to be added, certainly for plancache.c, maybe > for typcache.c, the other callers don't care. +1 > Record types can have attisdropped fields, so it's probably good to > check those. Yeah, good idea. (In most cases the attname comparison would catch that, but we shouldn't rely on it.) In a perfect world maybe a dropped column should be invisible to this comparison, but we're a very long way from being able to treat it that way. > I'm suspicious about attndims. Maybe one could create a test case where > record types differ only in that. Support for attndims throughout the > system is weak, but maybe there is something to check there. There was a discussion last year[1] about removing attndims altogether, which still seems to me like possibly a good idea. So I doubt we want to consider it as a core semantic field. > On a conceptual level, I figured pg_attribute rows can be divided up > into three categories: > 1. "row type" stuff: attname, atttypid, atttypmod, attndims, > attisdropped, attcollation > 2. physical layout stuff: attlen, attcacheoff, attbyval, attalign I recall some discussion about taking attcacheoff out of this data structure too ... > 3. table metadata stuff (everything else) > It's not perfect, and sometimes it's not clear whether these categories > inform the implementation or the other way around, but I think it helps > conceptualize it. Sure. regards, tom lane [1] https://www.postgresql.org/message-id/flat/ZD%2B14YZ4IUue8Rhi%40gendo.asyd.net