We were bit a couple months ago by a very similar issue where autovacuum ignored pg_type. A manual vacuum fixed it but since that table is abused by every client using libpq which is darn near everything I suspect it went bad in a hurry.
Question is, will this patch be backported to 9.3?
Tom Lane wrote: > Alvaro Herrera <alvherre@2ndquadrant.com> writes: > > Tom Lane wrote: > >> I think it's pretty obvious: autovacuum.c's rule for detecting whether > >> some other worker is already processing table X is wrong when X is a > >> shared table. I propose the attached patch. > > > Hmm, I have pretty much the same patch, except I added the flag to > > struct autovac_table and have it populated by table_recheck_autovac. > > Haven't tested this yet, which is why I hadn't posted it. > > Actually, I realized after looking at it that the new wi_tableshared > field is unnecessary in my patch. The only important part is that > knowledge of relisshared be available when we're looking for conflicting > workers, and that is entirely local in do_autovacuum(). I'd started the > patch by adding wi_tableshared, on the expectation that it would be > necessary, but it ain't ...
OK, if I understand you correctly then that is what my patch does -- the "sharedrel" flag in my patch is only inside do_autovacuum. Do you already have a test rig for this? If not, I can set one up so that I can push the patch hopefully later today. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services