mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
Fix overly-strict sanity check in BeginInternalSubTransaction that made it
fail when used in a deferred trigger. Bug goes back to 8.0; no doubt the reason it hadn't been noticed is that we've been discouraging use of user-defined constraint triggers. Per report from Frank van Vugt.
This commit is contained in:
parent
e7933588eb
commit
962cd2344e
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.195.4.2 2007/04/26 23:25:30 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.195.4.3 2007/05/30 21:02:02 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -2935,9 +2935,10 @@ RollbackToSavepoint(List *options)
|
|||||||
/*
|
/*
|
||||||
* BeginInternalSubTransaction
|
* BeginInternalSubTransaction
|
||||||
* This is the same as DefineSavepoint except it allows TBLOCK_STARTED
|
* This is the same as DefineSavepoint except it allows TBLOCK_STARTED
|
||||||
* state, and therefore it can safely be used in a function that might
|
* and TBLOCK_END states, and therefore it can safely be
|
||||||
* be called when not inside a BEGIN block. Also, we automatically
|
* used in functions that might be called when not inside a BEGIN block
|
||||||
* cycle through CommitTransactionCommand/StartTransactionCommand
|
* or when running deferred triggers at COMMIT time. Also, it
|
||||||
|
* automatically does CommitTransactionCommand/StartTransactionCommand
|
||||||
* instead of expecting the caller to do it.
|
* instead of expecting the caller to do it.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
@ -2949,6 +2950,7 @@ BeginInternalSubTransaction(char *name)
|
|||||||
{
|
{
|
||||||
case TBLOCK_STARTED:
|
case TBLOCK_STARTED:
|
||||||
case TBLOCK_INPROGRESS:
|
case TBLOCK_INPROGRESS:
|
||||||
|
case TBLOCK_END:
|
||||||
case TBLOCK_SUBINPROGRESS:
|
case TBLOCK_SUBINPROGRESS:
|
||||||
/* Normal subtransaction start */
|
/* Normal subtransaction start */
|
||||||
PushTransaction();
|
PushTransaction();
|
||||||
@ -2966,7 +2968,6 @@ BeginInternalSubTransaction(char *name)
|
|||||||
case TBLOCK_DEFAULT:
|
case TBLOCK_DEFAULT:
|
||||||
case TBLOCK_BEGIN:
|
case TBLOCK_BEGIN:
|
||||||
case TBLOCK_SUBBEGIN:
|
case TBLOCK_SUBBEGIN:
|
||||||
case TBLOCK_END:
|
|
||||||
case TBLOCK_SUBEND:
|
case TBLOCK_SUBEND:
|
||||||
case TBLOCK_ABORT:
|
case TBLOCK_ABORT:
|
||||||
case TBLOCK_SUBABORT:
|
case TBLOCK_SUBABORT:
|
||||||
|
Loading…
Reference in New Issue
Block a user