diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 6bc056bbc33..1d5e0c646a4 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -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: {