Andres Freund <and...@anarazel.de> writes: > On 2015-07-03 19:26:05 +0200, Andres Freund wrote: >> commit cab9a0656c36739f59277b34fea8ab9438395869 >> Author: Tom Lane <t...@sss.pgh.pa.us> >> Date: Sun Aug 23 19:23:41 2009 +0000 >> >> Make TRUNCATE do truncate-in-place when processing a relation that was >> created >> or previously truncated in the current (sub)transaction. This is safe since >> if the (sub)transaction later rolls back, we'd just discard the rel's current >> physical file anyway. This avoids unreasonable growth in the number of >> transient files when a relation is repeatedly truncated. Per a performance >> gripe a couple weeks ago from Todd Cook. >> >> to me the reasoning here looks flawed.
> It looks to me we need to re-neg on this a bit. I think we can still be > more efficient than the general codepath: We can drop the old > relfilenode immediately. But pg_class.relfilenode has to differ from the > old after the truncation. Why exactly? The first truncation in the (sub)xact would have assigned a new relfilenode, why do we need another one? The file in question will go away on crash/rollback in any case, and no other transaction can see it yet. I'm prepared to believe that some bit of logic is doing the wrong thing in this state, but I do not agree that truncate-in-place is unworkable. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers