Re: Bug in VACUUM FULL ?
От | Tom Lane |
---|---|
Тема | Re: Bug in VACUUM FULL ? |
Дата | |
Msg-id | 21960.1173298153@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Bug in VACUUM FULL ? ("Pavan Deolasee" <pavan.deolasee@enterprisedb.com>) |
Ответы |
Re: Bug in VACUUM FULL ?
|
Список | pgsql-hackers |
"Pavan Deolasee" <pavan.deolasee@enterprisedb.com> writes: > I am right now working on to get HOT and VACUUM FULL work > together. I hit upon a bug which I initially thought is > something that HOT has introduced. But I can reproduce > it with CVS HEAD as well. I think we broke this in 8.2: vac_update_relstats needs to ensure that it always sends a relcache invalidation event, but as of 8.2 it's set up to conditionally update the pg_class entry only if it wrote new values into the tuple. If vacuum full is truncating the rel back to the same length that it was on the previous cycle (as is always the case in this test), then no update, hence no relcache flush, hence clients still think their cached rd_targblock is good. I think the code in vac_update_relstats if (dirty) heap_inplace_update(rd, ctup); needs to look more like what index_update_stats does: if (dirty){ heap_inplace_update(pg_class, tuple); /* the above sends a cache inval message */}else{ /* no need tochange tuple, but force relcache inval anyway */ CacheInvalidateRelcacheByTuple(tuple);} Please check if this makes it go away for you --- I'm a bit busy at the moment. regards, tom lane
В списке pgsql-hackers по дате отправления: