Ron Mayer wrote: > Heikki Linnakangas wrote: >> Peter Schuller wrote: >>> to have a slow background process (similar to normal non-full vacuums >> ... >> I think it's doable, if you take a copy of the tuple, and set the ctid >> pointer on the old one like an UPDATE, and wait until the old tuple is >> no longer visible to anyone before removing it. It does require some >> changes to tuple visibility code. > > Wouldn't just having this slow background process > repeatedly alternating between > update table set anycol=anycol where ctid > [some ctid near the end] > and running normal VACUUM statements do what the original poster > was asking?
Almost. Updaters would block waiting for the UPDATE, and updaters in serializable mode would throw serialization errors. And the "WHERE ctid > ?" would actually result in a seq scan scanning the whole table, since our tid scans don't support inequality searches. > And with 8.3, I guess also avoiding HOT? HOT shouldn't cause any complications here AFAICS. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org