So while poking at a recent example from Marc Cousin (hundreds of tables each with 1000 attributes) I observed that a simple ANALYZE would bloat the backend process to the tune of several hundred megabytes. I think there is a leak in CacheMemoryContext, but haven't tracked it down yet. But I also noticed that tens of megabytes were disappearing into "Attopt cache", and after reading the code to see what the heck that was, I am wondering what the justification for having it is at all. In the presumably normal case where the attribute hasn't got options, all it's saving us is a syscache access, which is probably not noticeably more expensive than the hash lookup. In the case where there is an option, it's saving us an attribute_reloptions() call, but it's not apparent to me that that's so expensive as to justify putting a cache in front of it, especially not if we're going to do a palloc cycle anyway.
Did anybody do any performance measurements to demonstrate that this code has a reason to live? Because if I don't see some, I'm going to rip it out. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers