]> granicus.if.org Git - postgresql/commit
Fix relfilenodemap.c's handling of cache invalidations.
authorRobert Haas <rhaas@postgresql.org>
Wed, 13 Nov 2013 15:52:59 +0000 (10:52 -0500)
committerRobert Haas <rhaas@postgresql.org>
Wed, 13 Nov 2013 15:52:59 +0000 (10:52 -0500)
commitc46c803f8ad4ba80472b280703983ecf8021099e
tree6b6ed7ca2a26c39462223911c4477bc81ece64bc
parentcd8115e0090cb04380292f880adcec9c2fc2e0f3
Fix relfilenodemap.c's handling of cache invalidations.

The old code entered a new hash table entry first, then scanned
pg_class to determine what value to fill in, and then populated the
entry.  This fails to work properly if a cache invalidation happens
as a result of opening pg_class.  Repair.

Along the way, get rid of the idea of blowing away the entire hash
table as a method of processing invalidations.  Instead, just delete
all the entries one by one.  This is probably not quite as cheap but
it's simpler, and shouldn't happen often.

Andres Freund
src/backend/utils/cache/relfilenodemap.c