Re: Patches for TODO item: Avoid truncating empty OCDR temp tables on COMMIT - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Patches for TODO item: Avoid truncating empty OCDR temp tables on COMMIT
Date
Msg-id 51067F8C.5010306@vmware.com
Whole thread Raw
In response to Re: Patches for TODO item: Avoid truncating empty OCDR temp tables on COMMIT  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Patches for TODO item: Avoid truncating empty OCDR temp tables on COMMIT
List pgsql-hackers
On 15.01.2013 21:03, Tom Lane wrote:
> Robert Haas<robertmhaas@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;
caseONCOMMIT_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;
caseONCOMMIT_DROP:                  {
 

We already have that MyXactAccessedTempRel global flag. Just checking 
that should cover many common cases.

- Heikki



pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: autovacuum not prioritising for-wraparound tables
Next
From: Amit Kapila
Date:
Subject: Re: Performance Improvement by reducing WAL for Update Operation