mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Skip truncating ON COMMIT DELETE ROWS temp tables, if the transaction hasn't
touched any temporary tables. We could try harder, and keep track of whether we've inserted to any temp tables, rather than accessed them, and which temp tables have been inserted to. But this is dead simple, and already covers many interesting scenarios.
This commit is contained in:
parent
fd4ced5230
commit
c9d7dbacd3
@ -10124,7 +10124,13 @@ 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);
|
||||
/*
|
||||
* 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:
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user