diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-12-06 23:57:17 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-12-06 23:57:17 +0000 |
commit | d5df606cb224fd893b41aef6dc4851bc666c0f77 (patch) | |
tree | 5bee8de79b164a2e06705ff70014ef072c3ade74 /src/backend/commands/trigger.c | |
parent | e514da649e5e13a7d187f57e4c15feeae1dff0da (diff) | |
download | postgresql-d5df606cb224fd893b41aef6dc4851bc666c0f77.tar.gz postgresql-d5df606cb224fd893b41aef6dc4851bc666c0f77.zip |
ActiveSnapshot must be set to something valid while running deferred
triggers during COMMIT. Per trouble report from Frank van Vugt.
Diffstat (limited to 'src/backend/commands/trigger.c')
-rw-r--r-- | src/backend/commands/trigger.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 62071a68786..e3d8021c3f0 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.175 2004/11/14 02:04:14 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.176 2004/12/06 23:57:17 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2365,6 +2365,14 @@ AfterTriggerEndXact(void) Assert(afterTriggers->query_depth == -1); /* + * If there are any triggers to fire, make sure we have set a snapshot + * for them to use. (Since PortalRunUtility doesn't set a snap for + * COMMIT, we can't assume ActiveSnapshot is valid on entry.) + */ + if (afterTriggers->events.head != NULL) + ActiveSnapshot = CopySnapshot(GetTransactionSnapshot()); + + /* * Run all the remaining triggers. Loop until they are all gone, * just in case some trigger queues more for us to do. */ |