On Mon, Jan 28, 2013 at 8:39 AM, Heikki Linnakangas <hlinnakan...@vmware.com> wrote: > On 15.01.2013 21:03, Tom Lane wrote: >> Robert Haas<robertmh...@gmail.com> writes: >>> >>> On the third hand, the fact that a table is OCDR is recorded in >>> backend-local storage somewhere, and that storage (unlike the >>> relcache) had better be reliable. So maybe there's some way to >>> finesse it that way. >> >> Hm, keep a flag in that storage you mean? Yeah, that could possibly >> work. > > Sounds reasonable. > > Until someone gets around to write a patch along those lines, I'm inclined > to apply this one liner: > > *** a/src/backend/commands/tablecmds.c > --- b/src/backend/commands/tablecmds.c > *************** > *** 10124,10130 **** PreCommit_on_commit_actions(void) > /* Do nothing (there shouldn't be such > entries, actually) */ > break; > case ONCOMMIT_DELETE_ROWS: > ! oids_to_truncate = > lappend_oid(oids_to_truncate, oc->relid); > break; > case ONCOMMIT_DROP: > { > --- 10124,10136 ---- > /* Do nothing (there shouldn't be such > entries, actually) */ > break; > case ONCOMMIT_DELETE_ROWS: > ! /* > ! * If this transaction hasn't accessed any > temporary relations, > ! * we can skip truncating ON COMMIT DELETE > ROWS tables, as > ! * they must still be empty. > ! */ > ! if (MyXactAccessedTempRel) > ! oids_to_truncate = > lappend_oid(oids_to_truncate, oc->relid); > break; > case ONCOMMIT_DROP: > { > > We already have that MyXactAccessedTempRel global flag. Just checking that > should cover many common cases.
+1 for that. I'm actually unconvinced that we need to do any better than that in general. But certainly that seems like a good first step. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers