Thread: iterating over relation's attributes
What is the approved way to iterate over a relation's attributes? I see that lsyscache.c::get_relnatts() is marked NOT_USED and has been for nearly seven years. Maybe it's time to remove that code ;-) cheers andrew
Andrew Dunstan <andrew@dunslane.net> writes: > What is the approved way to iterate over a relation's attributes? Most places scan through the relation's tuple descriptor, rather than expending multiple catalog lookups in pg_attribute. regards, tom lane
Tom Lane wrote: > Andrew Dunstan <andrew@dunslane.net> writes: > >> What is the approved way to iterate over a relation's attributes? >> > > Most places scan through the relation's tuple descriptor, rather > than expending multiple catalog lookups in pg_attribute. > > > Doesn't that require me to open the relation? Is that a good thing if I wouldn't otherwise be doing that? This is in the context of making CheckAttributeType recurse into composite types. cheers andrew
Andrew Dunstan <andrew@dunslane.net> writes: > Tom Lane wrote: >> Andrew Dunstan <andrew@dunslane.net> writes: >>> What is the approved way to iterate over a relation's attributes? >> >> Most places scan through the relation's tuple descriptor, rather >> than expending multiple catalog lookups in pg_attribute. > Doesn't that require me to open the relation? Is that a good thing if I > wouldn't otherwise be doing that? Sure, because whatever work gets done is likely to be amortized across multiple uses of the relcache entry anyway. regards, tom lane