Tom Lane wrote: > I wrote: > > ... but I suddenly fear that we've missed a fundamental point about > > pg_clog truncation. And WAL wraparound for that matter. To wit, a > > sufficiently long-lived temp table could contain old XIDs, and there's > > no way for anyone except the owning backend to clean them out, or even > > guarantee that they're marked committed. > > After further thought I believe this is OK as of 8.2, because a temp > table's relfrozenxid is tracked independently of any other's. (This > problem puts a stake through the heart of the recently-discussed idea > that a temp table might be able to get along without a globally visible > pg_class entry, however.) > > But it seems that we need a band-aid for 8.1 and earlier. The simplest > fix I can think of is for vacuum not to attempt to advance the > datvacuumxid/datfrozenxid fields if it skipped over any temp tables of > other backends. That's a bit nasty, since in a database making heavy > use of temp tables, you might do a whole lot of vacuums without ever > meeting that condition. Anyone have a better idea? That seems nasty. Can we examine the xmin of the pg_class entry for temp tables instead? -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support